有没有办法在for循环中动态使用已经创建的变量?

时间:2019-06-26 12:21:39

标签: r loops

我是R的新手,我想创建新的变量名并使用先前在for循环中创建的其他变量名。

我在线上找到了在循环中创建新变量的方法,但是我无法使用之前创建的其他变量进行操作。我已经尝试过粘贴函数并创建变量wihtin for循环。有人知道我如何处理循环中已经创建的变量吗?

这是可以手动完成的方式。

ACE1_dropc = umxModify(ACE1, update = "c_r1c1", name = "AE")

ACE2_dropc = umxModify(ACE2, update = "c_r1c1", name = "AE")

ACE3_dropc = umxModify(ACE3, update = "c_r1c1", name = "AE") 

通过使用下一个循环,将创建变量,但是它们都在函数ACE1中调用了相同的参数umxMofidyACE1是已经创建的S4类变量)。我想在每次迭代中使用不同的变量(ACE1ACE2ACE3),但是当我尝试使用paste0("ACE",i)时,它不起作用。

for(i in 1:3){
  assign(paste("ACE", i, "_dropc", sep = ""), umxModify(ACE1, update = "c_r1c1", name = "AE") )    
}

2 个答案:

答案 0 :(得分:0)

尽管使用列表或其他数据结构通常是最佳做法,但您可以使用get()通过其名称检索变量。例如

a1 = 1
z = get(paste0("a",1))
print(z)
1

在循环中,您将1更改为i-> get(paste0("ACE",i))

答案 1 :(得分:0)

我不确定umxModify是什么,但是我肯定会使用list。在下面的示例中,我将随机数分配给列表l,然后计算其绝对值。请注意,列表中的所有元素均已命名,并且可以由l[[paste0("iteration", i)]]访问。

l <- list()

for(i in 1:3){
  l[[paste0("iteration_", i)]] <- rnorm(1)
}

lapply(l, abs)