在for循环中对多个表执行相同的操作

时间:2014-02-17 22:45:00

标签: r for-loop

这是我正在尝试做的非常简化的版本。简而言之,我创建了一些我想要执行相同操作的矩阵,就像在循环中一样。在这个例子中,我想打印每个矩阵的摘要,但我不知道如何在for循环中引用矩阵。非常感谢任何帮助:

for (i in 1:3){
  x <- paste0('df', i)
  assign(x, matrix(sample(1:10, 15, replace = TRUE), ncol = 3))
  print(summary(eval(x)))
}

返回(它将'df3'评估为字符串):

   Length     Class      Mode 
        1 character character 
   Length     Class      Mode 
        1 character character 
   Length     Class      Mode 
        1 character character

如何让它返回以下内容?

       V1             V2            V3    
 Min.   : 1.0   Min.   :3.0   Min.   : 5  
 1st Qu.: 5.0   1st Qu.:3.0   1st Qu.: 5  
 Median : 6.0   Median :4.0   Median : 7  
 Mean   : 5.6   Mean   :5.2   Mean   : 7  
 3rd Qu.: 6.0   3rd Qu.:7.0   3rd Qu.: 8  
 Max.   :10.0   Max.   :9.0   Max.   :10 

       V1          V2            V3      
 Min.   :2   Min.   :1.0   Min.   : 4.0  
 1st Qu.:4   1st Qu.:3.0   1st Qu.: 4.0  
 Median :7   Median :3.0   Median : 6.0  
 Mean   :6   Mean   :3.4   Mean   : 6.6  
 3rd Qu.:8   3rd Qu.:4.0   3rd Qu.: 9.0  
 Max.   :9   Max.   :6.0   Max.   :10.0  

       V1            V2             V3     
 Min.   :1.0   Min.   : 5.0   Min.   :1.0  
 1st Qu.:2.0   1st Qu.: 6.0   1st Qu.:2.0  
 Median :6.0   Median : 6.0   Median :3.0  
 Mean   :5.2   Mean   : 6.8   Mean   :2.4  
 3rd Qu.:8.0   3rd Qu.: 7.0   3rd Qu.:3.0  
 Max.   :9.0   Max.   :10.0   Max.   :3.0  

2 个答案:

答案 0 :(得分:5)

不要使用不同的变量和paste他们的名字 - 将你的对象放入一个列表中:

x = Map(function (i) matrix(sample(1:10, 15, replace = TRUE), ncol = 3), 1 : 3)

然后对它们执行常见操作也是微不足道的:

Map(summary, x)

Map将函数映射到列表中。它的操作类似于lapply and mapply family of functions

答案 1 :(得分:1)

我认为您可以使用eval(as.name("df3"))get("df3")