根据for循环中的索引分配变量

时间:2018-01-12 13:48:22

标签: r

所以我在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也应根据索引而变化。知道我怎么能做这个工作吗?

2 个答案:

答案 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()