为什么 ggplot 注释会抛出此警告:在 is.na(x) 中:is.na() 应用于 'expression' 类型的非(列表或向量)
Why does ggplot annotate throw this warning: In is.na(x) : is.na() applied to non-(list or vector) of type 'expression'
我想用一个简单的方程来注释 ggplot 图。下面的代码做到了,但它会发出有关应用 is.na():
的警告
library(ggplot2)
ggplot() +
annotate(geom = "text", x = 1, y = 1,
label = expression(paste(beta, pi, "(1-" , pi, ")")),
hjust = "left")
Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'expression'
在没有警告的情况下包含表达式的正确语法是什么?
为什么这不能使警告消失?
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
annotate() function does not support expressions。你需要传入一个字符串并设置parse=TRUE
。你可以做到
annotate(geom = "text", x = 1, y = 1,
label = 'paste(beta, pi, "(1-" , pi, ")")', parse=TRUE,
hjust = "left")
在没有警告的情况下 运行 代码的方法是将表达式作为列表传递并设置 parse = TRUE
.
library(ggplot2)
ggplot() +
annotate(geom = "text", x = 1, y = 1,
label = list('paste(beta, pi, "(1-" , pi, ")")'),
hjust = "left", parse = TRUE)
由 reprex package (v0.3.0)
于 2021-02-01 创建
尝试对表达式求值 is.na()
时生成警告。
is.na(expression(1 + 2))
#> Warning in is.na(expression(1 + 2)): is.na() applied to non-(list or vector) of
#> type 'expression'
#> [1] FALSE
在 ggplot2 中,这种检查发生在 ggplot2:::is_complete(expression(1 + 2))
中,它在 ggplot2:::detect_missing
中调用。我通过设置 options(warn = 2)
然后使用 traceback()
引导我使用这些功能来发现这一点。
我想用一个简单的方程来注释 ggplot 图。下面的代码做到了,但它会发出有关应用 is.na():
的警告library(ggplot2)
ggplot() +
annotate(geom = "text", x = 1, y = 1,
label = expression(paste(beta, pi, "(1-" , pi, ")")),
hjust = "left")
Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'expression'
在没有警告的情况下包含表达式的正确语法是什么?
为什么这不能使警告消失?
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
annotate() function does not support expressions。你需要传入一个字符串并设置parse=TRUE
。你可以做到
annotate(geom = "text", x = 1, y = 1,
label = 'paste(beta, pi, "(1-" , pi, ")")', parse=TRUE,
hjust = "left")
在没有警告的情况下 运行 代码的方法是将表达式作为列表传递并设置 parse = TRUE
.
library(ggplot2)
ggplot() +
annotate(geom = "text", x = 1, y = 1,
label = list('paste(beta, pi, "(1-" , pi, ")")'),
hjust = "left", parse = TRUE)
由 reprex package (v0.3.0)
于 2021-02-01 创建尝试对表达式求值 is.na()
时生成警告。
is.na(expression(1 + 2))
#> Warning in is.na(expression(1 + 2)): is.na() applied to non-(list or vector) of
#> type 'expression'
#> [1] FALSE
在 ggplot2 中,这种检查发生在 ggplot2:::is_complete(expression(1 + 2))
中,它在 ggplot2:::detect_missing
中调用。我通过设置 options(warn = 2)
然后使用 traceback()
引导我使用这些功能来发现这一点。