我知道有几种方法可以将文件夹中的文件绑定到一个大数据框(例如来自rbindlist(mget(ls(pattern = "^df\\.\\d+")))
包的data.table
)。这不是我打算在这里做的。我需要将我在R环境中的数据帧与包含.csv文件的文件夹中的数据帧绑定。 R dfs和.csv dfs具有相同的结构(类似于rbind.fill
)。
数据框名称具有前4个字符的指示符。所以在R数据中,framse看起来像这样:DF01
,DF02
,DF03
。在.csv文件夹中注明如下:DF01_a
,DF01_B
; DF02_a
,DF02_b
; DF03_a
,DF03_b
。
因此,您可以看到R中的每个数据框,我将添加多个.csv,所以我想出最简单的方法是使用模式绑定它们。例如pattern=substr(df.list,1,4)
,它应该基于前4个字符绑定dfs。
答案 0 :(得分:0)
也许是这样的:
DF01 = data.frame(a=c(1,2,3),b=c(3,2,1))
DF02 = data.frame(a=c(1,2,3),b=c(3,2,1))
my_dfs = ls()[grepl('DF',ls())]
library(data.table)
for (i in 1:length(my_dfs))
{
thisdf <- get(my_dfs[i])
files_to_add <- list.files()[grepl(my_dfs[i],list.files())]
dfs_to_add <- lapply(files_to_add,fread)
dfs_to_add[[length(dfs_to_add)+1]]= thisdf
assign(my_dfs[i],rbindlist(dfs_to_add,fill=T))
}
我的目录中有三个名为DF01_a.csv
,DF01_b.csv
和DF02_a.csv
的文件,输出:
> DF01
a b
1: 4 6
2: 5 7
3: 4 6
4: 5 7
5: 1 3
6: 2 2
7: 3 1
> DF02
a b
1: 4 6
2: 5 7
3: 1 3
4: 2 2
5: 3 1
希望这有帮助!