在R中每n个循环生成一个新变量

时间:2014-01-30 13:56:43

标签: r variables for-loop counter naming-conventions

我有一个命令,它在R中每10个循环生成一个变量(index1,index2,index3 ......等等)。我的命令是有用的,但我正在考虑一种更聪明的方法来编写这个命令。这是我的命令:

for (counter in 1:10){

for (i in 1:100){
if (counter == 1){

index1 <- data1 ## some really long command here, I just changed it to this simple command to illustrate the idea

}

if (counter == 2){

index2 <- data2    
}



.
.
.
# until I reach index10
} indexing closure
} ## counter closure

有没有办法写这个而不必编写条件if命令?我想生成index1,index2 ....我确信有一些简单的方法可以做到这一点,但我想不出来。

感谢。

1 个答案:

答案 0 :(得分:2)

您需要的是modulo运算符%%。在内循环内。例如:100 %% 10返回0 101 %% 10返回1 92 %% 10返回2 - 换句话说,如果它是10的倍数,那么你得到0.和assign函数。

注意:您不再需要示例中使用的外部循环。 因此,要每10次迭代创建一个变量,请执行类似这样的操作

for(i in 1:100){
#check if i is multiple of 10
   if(i%%10==0){
     myVar<-log(i)
    assign(paste("index",i/10,sep=""), myVar)
   }

}


ls() #shows that index1, index2, ...index10 objects have been created.
index1 #returns 2.302585

<强>更新 或者,您可以将结果存储在矢量

  index<-vector(length=10)
        for(i in 1:100){
        #check if i is multiple of 10
           if(i%%10==0){
             index[i/10]<-log(i)
           }

        }
index #returns a vector with 10 elements, each a result at end of an iteration that is a multiple of 10.