如何在没有分配的情况下即时使用生成变量名?

How to use generate variable name on fly without assignment?

我知道如何从这里生成变量并为其赋值:Create a variable name with "paste" in R?

但是我不需要给生成的变量赋值,我需要使用生成名称的变量。 这是我的代码:

a1 <- 1
a2 <- 2
a3 <- 3
a4 <- 4
a5 <- 5

counter <- 1
while(counter <= 5)
{
  (paste0("a", counter) + 1)
  counter <- counter +1
}

问题:如何修改(paste0("a", counter) + 1)使上面的代码在控制台输出:

2
3
4
5
6

您可以通过不同的方式将变量存储在列表中来做到这一点:

a <- setNames(as.list(1:5),paste0("a",1:5))

counter <- 1
while(counter <= 5)
{
  idx <- paste0("a",counter)
  print(a[[idx]] + 1)
  counter <- counter +1
}

另一种解决方案:在循环中,您为每个 a* 分配一个新值,即它们先前的值 + 1。然后您获取每个 a* 的值并打印它。最后,counter增加一个单位。

a1 <- 1
a2 <- 2
a3 <- 3
a4 <- 4
a5 <- 5

counter <- 1
while(counter <= 5)
{
  assign(paste0("a", counter), counter + 1)
  print(get(paste0("a", counter)))
  counter <- counter + 1
}