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



我一直在尝试将同一个循环用于不同的目的,它总是显示编程系列的最后一行。我需要每六列选择一次,从第一列开始,到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()但没有成功。

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

一些示例数据:

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函数中。

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

   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 转换为列表。这有帮助吗?

最新更新