循环只适用于R中的最后一行

时间:2013-09-23 07:40:40

标签: r loops

我一直试图将相同的循环用于不同的目的,它总是显示编程的系列的最后一行。我需要选择每六列,从第一列开始,从25(到30)结束

for(i in seq(1,25,by=6)) {
  print(describe(scores[,c(i:i+5)])) 
}

显示的信息仅对应于列25:30;什么可能是错误的,它不会在循环中打印每个系列? 谢谢!

修改

还有一个循环不起作用,似乎有其他原因:

P <- array(0, dim=c(1032,7,5))
for(i in seq(1,25,by=6)) {   
  for (j in 1:5) {
    P[,1:6,j] <- scores[,c(i:(i+5))] 
    P[,7,j] <- scores[,j+30]
  }
}

显示错误消息:Incorrect number of subscripts。还尝试flush.console()但没有成功。

2 个答案:

答案 0 :(得分:0)

如果要在循环中显示所有打印命令,则必须添加

   flush.console()

打印命令后的循环内部:

for(i in seq(1,25,by=6)) {
   print( describe( scores[,i:(i+5)] ) ) 
   flush.console()
}

修改

看起来像这个突击队

P[,1:6,j] <- scores[,c(i:(i+5))]

将P转换为列表。这有帮助吗?

答案 1 :(得分:0)

这个答案不会涉及到循环问题,但是如果您只想要describe(来自Hmisc - 包?)的输出用于这些特定列,则可能会有所帮助:

一些示例数据:

scores <- matrix(rep(sample(1:10,10),25),nrow=10,ncol=25)
dimnames(scores) <- list(1:10,LETTERS[1:25])

library(Hmisc)
describe(scores[,seq(1,25,6)])

这是有效的,因为for循环已构建到Hmisc:::describe函数中。