如何将计算序列分配给r中的变量序列

时间:2013-10-03 13:00:07

标签: r loops sequence

我在循环中遇到了一些棘手的挑战,我想在r中做更快的事情。 如何为一系列变量分配一系列小计算?例如:

fex1 = rbind(ben1,mal1)
fex2 = rbind(ben2,mal2)
fex3 = rbind(ben3,mal3)
....
....
fex40 = rbind(ben40,mal40)

其中ben(i)和mal(i)是序列1:40的7乘13矩阵,而fex(i)也是变量名1:40的序列。基本上,我已经将一些数据拆分成各种折叠,并希望对分割数据集的组合进行检索以执行其他一些计算。我已经使用lapply来循环rbind和其他函数但是如何在一系列矩阵中应用像rbind这样的函数并将值存储在一系列变量中来实现这个任务?

感谢。

1 个答案:

答案 0 :(得分:2)

你应该在这里使用一个列表:

# 
ben <- <list of all your ben's>
mal <- <list of all your mal's>

fex <- mapply(rbind, ben, mal)

# then just index using
fex[[i]]

如果您必须有单独的变量,请使用assign

N <- 30 # however many of each `ben` and `mal` you have
for (i in N) {
  bi <- paste0(ben, i)
  mi <- paste0(mal, i)
  fi <- paste0(fex, i)

  assign(fi, rbind(get(bi), get(mi)))
}

注意将对象收集到列表中:

ben <- lapply(do.call(paste0, list("ben", 1:N)), get)
mal <- lapply(do.call(paste0, list("mal", 1:N)), get)

# Which can then be indexed by
ben[[7]]
mal[[12]]  # etc

但是,您还应该尝试将它们放在getgo的列表中。