所以我在R中有一个小问题。我有多个数据集(data0,data1,...),我想做以下事情:
data01 <- data0[1:6,]
data02 <- data0[7:12,]
data11 <- data1[1:6,]
data12 <- data1[7:12,]
data21 <- data2[1:6,]
data22 <- data2[7:12,]
data31 <- data3[1:6,]
data32 <- data3[7:12,]
...etc
我想在for循环中这样做:
for(i in 1:(some high number)){
datai1 <- datai[1:6,]
datai2 <- datai[7:12,]
}
我已经尝试过使用assign()
和get()
,但是我无法让它发挥作用。我在this question找到了可能有效的内容,但不同之处在于变量d
也应根据索引而变化。知道我怎么能做这个工作吗?
答案 0 :(得分:1)
这是一种比使用assign
更像R的方法:
data1 <- data0 <- data.frame(x = 1:12, y = letters[1:12]) #some data
mylist <- mget(ls(pattern = "data\\d")) #collect free floating objects into list
#it would be better to put the data.frames into a list when you create them
res <- lapply(mylist, function(d) split(d[1:12,], rep(1:2, each = 6))) #loop over list and split each data.frame
结果是一个嵌套列表,并且很容易提取其元素:
res[["data1"]][["2"]]
# x y
#7 7 g
#8 8 h
#9 9 i
#10 10 j
#11 11 k
#12 12 l
答案 1 :(得分:0)
使用AlignText ActiveSheet, NextRow, 16 ' <-- if you have to use ActiveSheet
汇总变量名称,然后按照建议使用paste()
和get()
。
assign()