此解决方案的一个小变化
ls <- split(final_9880, rep(0:9, each = 1000, length.out = 9880)) # edited to Roman's suggestion
for(i in 1:10) assign(paste("test",i,sep="_"), ls[[i]])
您的绑定命令应该可以工作。
编辑
如果您有许多数据框,则可以使用 parse-eval 组合。我使用该软件包gsubfn
以提高可读性。
library(gsubfn)
nms <- paste("test", 1:10, sep="_", collapse=",")
eval(fn$parse(text='do.call(rbind, list($nms))'))
这是如何运作的?首先,我创建一个包含逗号分隔的数据框列表的字符串
> paste("test", 1:10, sep="_", collapse=",")
[1] "test_1,test_2,test_3,test_4,test_5,test_6,test_7,test_8,test_9,test_10"
然后我用这个字符串来构造列表
list(test_1,test_2,test_3,test_4,test_5,test_6,test_7,test_8,test_9,test_10)
使用parse
和eval
使用字符串插值。
eval(fn$parse(text='list($nms)'))
字符串插值是通过fn$
前缀 of实现的parse
,其作用是截取$nms
变量中包含的字符串并进行替换nms
。解析和评估字符串"list($mns)"
会创建所需的列表。在解决方案中,rbind
它包含在 parse-eval 组合中。
编辑 2
您可以收集具有特定模式的所有变量,将它们放在一个列表中并按行绑定它们。
do.call("rbind", sapply(ls(pattern = "test_"), get, simplify = FALSE))
ls
查找具有模式“test_”的所有变量
sapply
检索所有这些变量并将它们存储在列表中
do.call
逐行展平列表。