【发布时间】:2021-03-21 16:05:58
【问题描述】:
所以,我有大约 500 个 .txt 数据文件,它们都包含 8 列。每个数据文件在每一列中都有相同的值(行)。如果您比较 datafile1 和 datafile2 ,那么它们的行数大多不同,但它们中的一些行值是相同的,而有些则不是。 我想找到datafile1和datafile1+1=datafile2之间不同的所有值,我已经用sqldf解决了。
首先我使用 lapply 加载所有文件
list_of_files <- list.files(path = ".", recursive = TRUE, pattern = "\\.txt$",
full.names =TRUE)
DT <- lapply(list_of_files, read.table)
加载所有数据文件,这样第一个数据文件可以用DT[[1]]选择,第二个用DT[[1+1]]选择,适合循环使用。
对于 DT,我只想比较每个数据文件的 V4 和 V5 列,我想我可以用 DT[[i]] 和 DT[[i+1]] 循环它,但我无法让它工作.下面我展示了对 DT[[1]] 和 DT[[2]] 有效的方法。首先,我创建了 data.frames,其中包含相应 data.frames 的 V4 和 V5 列:
dt1<-data.frame(DT[[1]]$V4,DT[[1]]$V5)
dt2<-data.frame(DT[[1+1]]$V4,DT[[1+1]]$V5)
这里我只选择 dt1 和 dt2 不同的值:
df<-sqldf('SELECT * FROM dt1 EXCEPT SELECT * FROM dt2')
我想对所有 500 个数据文件循环 df 操作 DT[[i]] DT[[i+1]] 将所有 df 值存储在 data.frame 中
也许有人知道如何循环?
提前致谢
【问题讨论】:
标签: r dataframe for-loop lapply sqldf