【问题标题】:ggplot2, aes vs aes_stringggplot2,aes 与 aes_string
【发布时间】:2020-12-31 19:30:03
【问题描述】:

所以由于rcmdcheck() 失败,我需要将aes 替换为aes_string

原文:

        aes(
          x = A,
          y = pmax(B, C, na.rm = TRUE),
          ),

我对@9​​87654325@ 和C 感到困惑。我是否可以在它们周围加上引号,因为它们在 pmax 函数内?像这样:

        aes_string(
          x = "A",
          y = pmax("B", "C", na.rm = TRUE),
          ),

以下是另一种解决方案吗?:

        aes(
          x = .data$A,
          y = pmax(.data$B, .data$C, na.rm = TRUE),
          ),

已编辑:

R CMD Check 错误是变量ABC没有全局绑定。

【问题讨论】:

  • 建议对包使用.data$ 解决方案。您只需要从ggplot2(或dplyr)导入.data 代词aes_string 已弃用,以后的代码应避免使用。
  • 这里最安全的方法可能是在数据集中创建一个等于您的pmax() 函数的列,然后像往常一样通过aes_string() 定义该列名称。 df$mycol <- pmax(B, C, na.rm = TRUE) 然后 aes_string(x="A", y="mycol") 在您的 ggplot() 调用中应该可以工作。

标签: r ggplot2 dplyr tidyverse


【解决方案1】:

aesaes_string 之间的区别非常简单,aes_string 将解释描述参数的字符串。例如。以下作品

library(ggplot2)
data(mtcars)
ggplot(aes_string(x = "log(hp)", y = "1/log(mpg)", col = "factor(cyl)"), data = mtcars) + 
  geom_point() + 
  labs(col = 'cyl')

这也记录在help(aes_string) 页面上

aes_ 和 aes_string 要求您使用 "" 为 aes_string() 或使用引号或 ~ 为 aes_() 显式引用输入。

但正如 MrFlick 在 cmets 中所说,这些功能都已软弃用,我认为这意味着它们是为了兼容性而保留的,但不鼓励使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2013-12-25
    • 2019-03-10
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多