我想知道是否有办法将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。 有人可以指点一下吗?
答案 0 :(得分:1)
以下是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)
)
答案 1 :(得分:0)
我认为有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()
}