从一个矩阵制作多个多线图

Making multiple multi-line plots from one matrix

我想知道是否有一种方法可以将 apply 函数与 matplot 函数结合起来,为矩阵中的每 n 列生成一个新图。

我目前有一个 1350 行 640 列的矩阵。我正在使用 matplot:

绘制每 8 列所有行的值
png("cmpd1.png")
matplot(data[,1:8], type="l", y-lab="z-score", axes = F) 
axis(side=2)
dev.off()

我想稍微自动化一下,让列值在每个循环中移动 8 个,并且 png 上的标签改变 1 个。 有人可以指路吗?

我认为有一个版本 lapply() 但循环也能完成工作

for(i in seq(1,ncol(data),8)){
  png(paste0("cmpd",i,".png"))
  matplot(data[,i:(i+7)], type="l", ylab="z-score", axes = F) 
  axis(side=2)
  dev.off()
}

这是一个带有 vapply() 和格式化绘图名称的答案。返回关闭的设备id。

data <- matrix(rnorm(100*128),nrow = 100,ncol = 128)
vapply(seq(from=1,to=ncol(data)-8,by=8), 
   FUN = function (x) {
     png(paste0("cmpd",formatC(width = 3, format = "d", flag="0", x=x%/%8),".png"))
     matplot(data[,x:(x+8)], type="l", ylab="z-score", axes = F) 
     invisible(dev.off())
     },
   FUN.VALUE=integer(1)
)