在绘图标签中组合paste()和expression()函数

考虑以下简单示例:


labNames <- c('xLab','yLabl')

plot(c(1:10),xlab=expression(paste(labName[1], x^2)),ylab=expression(paste(labName[2], y^2)))

我想要的是使变量'labName,'xLab'或'yLab'定义的字符输入出现在expression()定义的X ^ 2或y ^ 2旁边。照原样,带有下标的实际文本'labName'被连接到上标表达式。


有什么想法吗?


陪伴而非守候
浏览 1622回答 3
3回答

函数式编程

bquote()函数@Aaron的替代解决方案。我们需要提供一个有效的R表达式,在这种情况下LABEL ~ x^2,例如,LABEL您要从vector分配的字符串在哪里labNames。bquote计算包装在表达式中的R代码,.( )并将结果代入表达式中。这是一个例子:labNames <- c('xLab','yLab')xlab <- bquote(.(labNames[1]) ~ x^2)ylab <- bquote(.(labNames[2]) ~ y^2)plot(c(1:10), xlab = xlab, ylab = ylab)(请注意,~只是增加了一些间距,如果您不希望使用空格,请将其替换为,*并且表达式的两个部分将并列。)

萧十郎

使用substitute代替。labNames <- c('xLab','yLab')plot(c(1:10),&nbsp; &nbsp; &nbsp;xlab=substitute(paste(nn, x^2), list(nn=labNames[1])),&nbsp; &nbsp; &nbsp;ylab=substitute(paste(nn, y^2), list(nn=labNames[2])))
打开App,查看更多内容
随时随地看视频慕课网APP