循环和变量名称

时间:2014-03-17 09:08:32

标签: r loops

这是一个小例子:

temp<-0
a1<-1
a2<-2
a3<-3
a4<-4

for(i in 1:4) {
  temp<-temp+a*     # temp+a1|a2|a3|a4 ...
}

我怎么能意识到这一点?

新例子:

matrix1<-cbind(rep(Sys.time(),4),matrix(1:8,nrow=4))
matrix2<-cbind(rep(Sys.time(),4),matrix(2:9,nrow=4))
matrix3<-cbind(rep(Sys.time(),4),matrix(3:10,nrow=4))

temp<-matrix(0,nrow=4,ncol=2)

for(i in 1:3) {
  temp<-temp+ ?  # temp = matrix1[,2:3] + matrix2[,2:3] + matrix3[,2:3]
}

这只是一个例子。我有50-150个矩阵

2 个答案:

答案 0 :(得分:1)

可能将这些值放在一个向量中:

temp<-0
a<-c(1,2,3,4) #or 1:4

for(i in 1:4) {
  temp<-temp+a[i]     # temp+a1|a2|a3|a4 ...
}

如果这是你真正需要做的,我推荐使用这样的sum函数: sum(a)

但是如果你想粘贴更复杂的命令,试试这个:

> a1 <- 1; a2<-2
> temp <- 0
> for(i in 1:2) temp <- eval(parse(text="temp+a"%+%i))
> temp
[1] 3

%+%是来自stringi包的字符串连接的运算符。 要安装它,请运行:

install.packages("stringi")
require(stringi)

答案 1 :(得分:1)

您可以使用paste0连接名称和索引,而不是仅使用get通过字符串名称引用变量。

for(i in 1:4) {
    temp <- temp + get(paste0("a", i))
}