R 矢量化打印的串联文本标签

R 矢量化打印的串联文本标签,r,plot,text,R,Plot,Text,我想将多个文本标签添加到一个绘图中,该绘图由一个表达式、一个斜体字符和一个值向量(存储在数据帧中)组成 我可以使用(例如)以下代码仅使用一个值来实现此功能: plot.new() axis(1) axis(2) text( c(0.5, 0.5), c(0.8, 0.4), expression(paste(italic(P),"-trend =", 0.01)) ) 但是,当用值向量替换0.01时,我无法实现这一点。例如,以下 plot.new() axis(1) axis(2) t

我想将多个文本标签添加到一个绘图中,该绘图由一个表达式、一个斜体字符和一个值向量(存储在数据帧中)组成

我可以使用(例如)以下代码仅使用一个值来实现此功能:

plot.new()
axis(1)
axis(2)

text( c(0.5, 0.5), c(0.8, 0.4), 
expression(paste(italic(P),"-trend =", 0.01)) )

但是,当用值向量替换0.01时,我无法实现这一点。例如,以下

plot.new()
axis(1)
axis(2)

text( c(0.5, 0.5), c(0.8, 0.4), 
expression(paste(italic(P),"-trend =", c(0.01, 0.001))) )
没有给出正确的标签向量,但:

因为向量在
expression()
中。我怎样才能做到这一点?我对这方面的知识不多,也许我错过了一个更明显的方法


发布了一个类似的问题,但我无法将其外推到我的案例中。

您可以将
表达式
替换为
bquote
,它使用了不同的
斜体
,并允许使用
()
来计算对象。我发现了这个用途。然后我使用for循环作为所需矢量化功能的解决方法

plot.new(); axis(1); axis(2)

txt <- list(x = c(0.5, 0.5), y = c(0.8, 0.4), vals = c(0.01, 0.001))

for(i in 1:length(txt$vals)){
  text(x = txt$x[i], 
       y = txt$y[i], 
       labels = bquote(paste(italic("P"), "-trend = ", .(txt$vals[i]))))
}
plot.new();轴(1);轴(2)

txt您可以将
表达式
交换为
bquote
,该表达式具有不同的
斜体
用法,并允许使用
()
对对象求值。我发现了这个用途。然后我使用for循环作为所需矢量化功能的解决方法

plot.new(); axis(1); axis(2)

txt <- list(x = c(0.5, 0.5), y = c(0.8, 0.4), vals = c(0.01, 0.001))

for(i in 1:length(txt$vals)){
  text(x = txt$x[i], 
       y = txt$y[i], 
       labels = bquote(paste(italic("P"), "-trend = ", .(txt$vals[i]))))
}
plot.new();轴(1);轴(2)

txt@Evan的解决方案运行良好,但多亏了他的答案和在上找到的其他答案,所以我设法使用
sapply()
对其进行矢量化,消除了对
for
循环的需要

plot.new()
axis(1)
axis(2)

plabs <- function(x) as.expression(bquote(italic(P)~ "-trend =" ~ .(x) ))
text(c(0.5, 0.5), c(0.8, 0.4), labels = sapply(c(0.01, 0.001), plabs))
plot.new()
轴(1)
轴(2)

plabs@Evan的解决方案工作得很好,但多亏了他的答案和在上找到的其他答案,所以我设法用
sapply()
对其进行矢量化,消除了
for
循环的需要

plot.new()
axis(1)
axis(2)

plabs <- function(x) as.expression(bquote(italic(P)~ "-trend =" ~ .(x) ))
text(c(0.5, 0.5), c(0.8, 0.4), labels = sapply(c(0.01, 0.001), plabs))
plot.new()
轴(1)
轴(2)

格子真的做得很好。我尝试过这个,但失败了,在命名函数并在内部使用它之前停止了。看起来很棒+1做得真不错。我尝试过这个,但失败了,在命名函数并在内部使用它之前停止了。看起来很棒+1.