我正在尝试从R中的z分数矩阵绘制图形,我想构建一个函数,使用列标题作为标题的一部分迭代每列,并将每个图形保存为png。我想我知道如何进行迭代并将图形保存为pngs但我仍然坚持使用向量作为字符串。我尝试上传没有列标题的矩阵,然后将矩阵[1,]存储为要使用的变量“标题”。然后我试图绘制:
plot(1:30, rnorm(30), ylim=c(-10,10), yaxs="i", xlab = "Region", ylab = "Z-Score",main = "CNV plot of " + headers[i], type = "n")
我明白了:
Warning message:
In Ops.factor(left, right) : + not meaningful for factors
我试着没有'+',它说:
Error: unexpected symbol in ...
然后我环顾四周,找到了'paste(headers [i],collapse =“”),虽然我可以替代它,但它只是将数字'28'作为标题。
我已经尝试了我认为的另一种潜在解决方案:
plot(1:30, rnorm(30), ylim=c(-10,10), yaxs="i", xlab = "Region", ylab = "Z-Score",main = "Z-scores of " $headers[i], type = "n")
我得到了:
Error in "Z-scores of "$headers :
$ operator is invalid for atomic vectors
我是R的新手,如果我偶然在谷歌搜索后偶然发现正确的指南/教程,这似乎很简单,但我真的没有那种时间在我的手上。任何建议,指针或解决方案都会很棒??
答案 0 :(得分:2)
paste("CNV plot of", headers[i])
,应该有效。如果要粘贴长度大于一的向量,则只需要collapse
(headers[i]
应为一个长度,即使header
不是)。与PHP,JS等不同,R没有任何连接运算符(因此+
,&
,.
将不起作用,您必须使用paste
)。< / p>
请注意,您的粘贴为paste(headers[i],collapse=" ")
,如果刚刚标出28
,则表示您的headers
向量不包含您认为的内容(如果您不想要的话)要显示28
,即。
尝试循环遍历矢量并将粘贴命令打印到屏幕以查看它显示的内容(并且还打印矢量)。
答案 1 :(得分:2)
如果要将变量中的值插入到绘图标题的字符串中,bquote
是可行的方法:
headers <- c(28, 14, 7) # an examle
i <- 1
plot(1:30, rnorm(30), ylim=c(-10,10), yaxs="i",
xlab = "Region", ylab = "Z-Score", type = "n",
main = bquote("CNV plot of" ~ .(headers[i])) )
请查看?bquote
的帮助页面以获取更多信息。