在R中我想在for循环中创建几个图。 y轴标签应该显示下标,其中下标文本应该与循环迭代器一起变化。
对于下标标签,我之前使用过"表达式#34;。但是,正如您在最小示例中所看到的,表达式中的下标无法按照我的想法进行索引(而不是打印" 1"," 2",&#34 ; 3"它只是打印" i")。您是否知道如何解决此问题(通过使用表达式函数或能够生成下标的任何其他文本函数)?
最小代码:
# minimal example code
Data = matrix(ncol = 4, nrow = 1000)
colnames(Data) = c("time", "k1", "k2", "k3")
Data[,1] = seq(0.1,100,0.1)
Data[,2] = sin(Data[,1])
Data[,3] = cos(Data[,1])
Data[,4] = tan(Data[,1])
for(i in 1:3) {
plot(Data[,1], Data[,(1+i)], type = "l", lwd = 2, xlab = "time", ylab = expression("k" [i]))
}
谢谢!
答案 0 :(得分:2)
使用bquote
。从这个SO偷来的:
Subscripts in plots in R
for(i in 1:3) {
plot(Data[,1], Data[,(1+i)], type = "l", lwd = 2, xlab = "time", ylab = bquote(k[.(i)]))
}
它的语法非常奇怪:bquote(WORD [ . (OBJECT) ]
。请注意,未引用WORD
和点。我相信.
指的是要找到的OBJECT
环境。