我需要研究不同数量的数据集(数据帧)。 目前我有这个:
dom.ready.dat <- rbind(dom.ready.dat.bad1,
dom.ready.dat.bad2,
dom.ready.dat.bad3,
dom.ready.dat.bad4,
dom.ready.dat.bad5,
dom.ready.dat.bad6,
dom.ready.dat.bad7,
dom.ready.dat.bad8,
dom.ready.dat.bad9,
dom.ready.dat.bad10,
dom.ready.dat.good1,
dom.ready.dat.good2,
dom.ready.dat.good3,
dom.ready.dat.good4,
dom.ready.dat.good5,
dom.ready.dat.good6,
dom.ready.dat.good7,
dom.ready.dat.good8,
dom.ready.dat.good9,
dom.ready.dat.good10)
但是,我可能有10个以上的数据帧,所以我需要引用模式dom.ready.dat *动态地将后缀动态地添加到R中的某个函数中,该函数获取不同数量的参数并分配像rbind这样的函数所有这些
答案 0 :(得分:1)
如果您要通过lapply()
创建data.frames,则可以将结果列表从rbind_all
传送到dplyr
:
library(dplyr)
lapply(1:20, function(i){
read.csv(sprintf("some_file%s.csv", i))
}) %>%
rbind_all
这样,如果您只对组合感兴趣,则不会有20个不同data.frames的中间步骤。
答案 1 :(得分:0)
我们可以在pattern
中指定ls
以将在全局环境中创建的所有对象作为字符串,然后使用mget
将对象中的值作为list
。从那里开始,使用rbindlist
data.table
library(data.table)
rbindlist(mget(ls(pattern="^dom.ready.dat")))
或使用rbind
do.call(rbind, mget(ls(pattern="^dom.ready.dat")))
更好的选择是读取list
中的所有文件,然后读取rbind
而不是创建大量对象。
files <- list.files(pattern="somepattern.csv", full.names=TRUE)
library(data.table)
rbindlist(lapply(files, fread))