如何在R上获得变量的值

时间:2016-02-24 04:56:54

标签: r variables

我有四个变量,如a.1,a.2,a.3和a.4。如何在R中的for循环中获取它们的值?

a.1 <- 3
a.2 <-3
a.3 <-4
a.4 <-5
sum <- 0
for (i in 1:4)
{
sum = sum + a.i
}

1 个答案:

答案 0 :(得分:3)

对于您给出的示例,如果要使用for循环,则需要使迭代器中的“i”可用。首先,您可以paste将“i”值放在您的对象名称的基础上。其次,您可以使用get来访问该值,而不是仅将粘贴的对象视为字符串。

a.1 <- 3; a.2 <- 3; a.3 <- 4; a.4 <- 5
sum <- 0
for (i in 1:4) {
  sum = sum + get(paste0("a.", i))
}

然而,更有可能在R中执行此操作的方法是使用@josliber建议的方法:

sum(unlist(mget(paste0("a.", 1:4))))

或使用Reduce

Reduce("+", mget(paste0("a.", 1:4)))

Reduce的明显优势在于,当您添加相同大小的矩阵时它会起作用:

b.1 <- matrix(1:4, 2, 2)
b.2 <- matrix(5:8, 2, 2)
b.3 <- matrix(9:12, 2, 2)
b.4 <- matrix(13:16, 2, 2)

Reduce("+", mget(paste0("b.", 1:4)))
#      [,1] [,2]
# [1,]   28   36
# [2,]   32   40

与您的for循环相当的是:

sum <- matrix(0, 2, 2)
for (i in 1:4) {
  sum = sum + get(paste0("b.", i))
}

但是,正如@josliber所提到的,如果您要进行这些操作,最好将数据存储在list中。