在下面的例子中,变量包含字母a。但是legend中的legend只返回temp而不是粗体的a。如何让它像“应该”一样工作?
a <- 2 b <- 5 temp <- letters[1] temp plot(a,b) legend("topleft", legend = c(as.expression(bquote(bold(get(temp)))), as.expression(bquote(temp))))
kqlmhetl1#
从这里得出答案:using bold in mtext on string coming from vector element为了让bquote计算一个变量,而不是简单地将其打印为文本,需要将术语 Package 在.()中,这将导致它在指定的环境(由where参数给定)中计算变量。
bquote
.()
where
temp <- 'a' e <- new.env() assign('temp','b',envir = e) plot(2,5) legend("topleft", legend = c(as.expression( bquote(bold(temp))), # No .(), `temp` is text bquote(bold(.(temp))), # eval `temp` in parent.env bquote(bold(.(temp)), where = e))) # eval `temp` in envir "e"
?bquote的帮助中提到:bquote将其参数括起来,除非在指定的where环境中计算 Package 在.()中的项
?bquote
zvms9eto2#
这两个回答帮助我找到了答案。我问了关于图例的问题。我使用terra包中的plot函数,结果在terra::plot中的图例选项中不起作用。但如果你在绘图中用相关坐标替换x和y,这段代码就起作用了。
text(x, y, cex = 1.5, (bquote(paste((bold(.(a)))))))
这看起来非常笨拙,但是为了清晰起见,试图在“a”后面的括号字符串中添加一个空格似乎行不通。
2条答案
按热度按时间kqlmhetl1#
从这里得出答案:using bold in mtext on string coming from vector element
为了让
bquote
计算一个变量,而不是简单地将其打印为文本,需要将术语 Package 在.()
中,这将导致它在指定的环境(由where
参数给定)中计算变量。?bquote
的帮助中提到:bquote将其参数括起来,除非在指定的
where
环境中计算 Package 在.()
中的项zvms9eto2#
这两个回答帮助我找到了答案。我问了关于图例的问题。我使用terra包中的plot函数,结果在terra::plot中的图例选项中不起作用。但如果你在绘图中用相关坐标替换x和y,这段代码就起作用了。
这看起来非常笨拙,但是为了清晰起见,试图在“a”后面的括号字符串中添加一个空格似乎行不通。