R 为什么ggplot annotate抛出这个警告:In is.na(x):is.na()应用于类型为';表达式';

R 为什么ggplot annotate抛出这个警告:In is.na(x):is.na()应用于类型为';表达式';,r,ggplot2,annotate,R,Ggplot2,Annotate,我想用一个简单的方程式来注释ggplot。下面的代码执行此操作,但它会抛出一个关于应用is.na()的警告: 在没有警告的情况下包含表达式的正确语法是什么 为什么这不能使警告消失 suppressWarnings( ggplot() + annotate(geom = "text", x = 1, y = 1, label = expression(paste(beta, pi, "(1-" , pi, "

我想用一个简单的方程式来注释ggplot。下面的代码执行此操作,但它会抛出一个关于应用is.na()的警告:

在没有警告的情况下包含表达式的正确语法是什么

为什么这不能使警告消失

suppressWarnings(
  ggplot() +
    annotate(geom = "text", x = 1, y = 1, 
             label = expression(paste(beta, pi, "(1-" , pi, ")")),
             hjust = "left")
)
我将R版本4.0.2与ggplot2版本3.3.2一起使用。您需要传入一个字符串并设置
parse=TRUE
。你能行

  annotate(geom = "text", x = 1, y = 1, 
           label = 'paste(beta, pi, "(1-" , pi, ")")', parse=TRUE,
           hjust = "left")

在没有警告的情况下运行代码的方法是将表达式作为列表传递,并设置
parse=TRUE

库(ggplot2)
ggplot()+
注释(geom=“text”,x=1,y=1,
标签=列表('paste(β,π,“(1-”,π,”)”),
hjust=“left”,parse=TRUE)

由(v0.3.0)于2021-02-01创建

尝试对表达式求值
is.na()
时会生成警告

is.na(表达式(1+2))
#>is.na(表达式(1+2))中的警告:is.na()应用于
#>键入“表达式”
#>[1]错误

在ggplot2中,这种检查发生在
ggplot2:::是否完整(表达式(1+2))
中,该检查在
ggplot2:::detect_missing
中调用。我通过设置
选项(warn=2)
发现了这一点,然后使用
回溯()
将我引向这些函数。

链接的线程很有趣,但它已经运行了5年,当时似乎失败了。OP编写的代码确实生成了一个解析良好的表达式,但只是带有警告。因此,我不太确定“注释不支持表达式”是否属实。谢谢。这就是我一直在寻找的引擎盖下的模糊功能:)谢谢Tjebo,很乐意帮忙:)
suppressWarnings(
  ggplot() +
    annotate(geom = "text", x = 1, y = 1, 
             label = expression(paste(beta, pi, "(1-" , pi, ")")),
             hjust = "left")
)
  annotate(geom = "text", x = 1, y = 1, 
           label = 'paste(beta, pi, "(1-" , pi, ")")', parse=TRUE,
           hjust = "left")