我有四个变量,如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
}
答案 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
中。