一個小的變化上this解決方案
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]])
你的命令的結合應該工作。
編輯
如果你有,你可以使用一個解析-EVAL組合許多dataframes。爲了便於閱讀,我使用包gsubfn
。
library(gsubfn)
nms <- paste("test", 1:10, sep="_", collapse=",")
eval(fn$parse(text='do.call(rbind, list($nms))'))
這是如何工作的?首先,我創建一個包含dataframes
> 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"
的逗號分隔的列表的字符串然後我用這個字符串中使用parse
和eval
用繩子插值來構建列表
list(test_1,test_2,test_3,test_4,test_5,test_6,test_7,test_8,test_9,test_10)
。
eval(fn$parse(text='list($nms)'))
字符串插值經由的parse
的fn$
前綴實現,它的效果是截取和與包含在可變nms
字符串替代$nms
。解析和評估字符串"list($mns)"
將創建所需的列表。在解決方案中,rbind
包含在parse-eval組合中。
EDIT 2
你可以收集具有一定模式的所有變量,把它們放在一個列表,並通過行約束力。
do.call("rbind", sapply(ls(pattern = "test_"), get, simplify = FALSE))
ls
發現所有變量在列表
do.call
模式「TEST_」
sapply
檢索所有這些變量,並將它們存儲拉平列表行明智。
讓我明白這一點。你正試圖將每1000個觀察值移動到一個單獨的對象(test_1,test_2 ...),然後在最後把它們混合在一起?難道你不會和你開始時一樣嗎? – 2012-07-23 07:35:43