如何解决此警告:is.na() 应用于“表达式”类型的非(列表或向量)?

问题描述 投票:0回答:1

以下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'

我很难找到解决方案。

ggplot2 expression annotate
1个回答
0
投票

我开始研究为什么会发生这种情况,但它很快就变得非常复杂(例如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

这能解决你的问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.