以下R代码
library(ggplot2)
ggplot() +
annotate("text", x = 1, y = 1, label=expression(paste("model 1, ", italic(R)^2, ": 0.50")),
size = 14/.pt, col='blue', parse=TRUE)
发出警告:
In is.na(x) : is.na() applied to non-(list or vector) of type 'expression'
我很难找到解决方案。
我开始研究为什么会发生这种情况,但它很快就变得非常复杂(例如https://github.com/tidyverse/ggplot2/pull/2867)。我的理解是
annotate()
需要一个字符串,而不是一个表达式;如果将表达式转换为字符串,它不会抛出错误:
library(ggplot2)
# warning
ggplot() +
annotate("text", x = 1, y = 1, label = expression(paste("model 1, ", italic(R)^2, ": 0.50")),
size = 14/.pt, col='blue', parse=TRUE)
#> Warning in is.na(x): is.na() applied to non-(list or vector) of type
#> 'expression'
# no warning
ggplot() +
annotate("text", x = 1, y = 1, label = as.character(expression(paste("model 1, ", italic(R)^2, ": 0.50"))),
size = 14/.pt, col='blue', parse=TRUE)
创建于 2023-10-03,使用 reprex v2.0.2
这能解决你的问题吗?