如何在没有分配的情况下即时使用生成变量名?
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
}
我知道如何从这里生成变量并为其赋值: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
}