【问题标题】:Feeding vector into summarise_at将向量输入 summarise_at
【发布时间】:2022-01-23 18:49:54
【问题描述】:

我确信这是显而易见的,因为我是 R 新手,但我无法弄清楚为什么第一种方法有效而第二种方法无效。我对“粘贴”的使用有问题。

library(dplyr)

    data(mtcars)
    characteristics <- c('disp', 'hp')
    summarise_at(df, .vars = vars(characteristics), mean)
    characteristics <- paste('disp hp', collapse = ",")
    summarise_at(df, .vars = vars(characteristics), mean)

【问题讨论】:

  • 你试过运行paste('disp hp', collapse = ",")吗?它没有做你认为它做的事
  • 我做到了。我的问题会更好地表述为想要从“disp hp”创建一个字符向量,尽管我对此也可能是错误的。

标签: r dplyr paste


【解决方案1】:

如果您想总结mtcars 中的disphp,为什么不使用更简单、更直接的方法呢?

mtcars %>%
  summarise(across(c('disp', 'hp'), mean))
      disp       hp
1 230.7219 146.6875

您也可以将您的向量“输入”到across 操作中:

characteristics <- c('disp', 'hp')
mtcars %>%
  summarise(across(characteristics, mean))
          disp       hp
    1 230.7219 146.6875

使用summarise(across...)还会考虑到所谓的作用域dplyr动词现在基本上已被across()取代

【讨论】:

    【解决方案2】:

    在朋友的帮助下,我找到了答案。

    library('dplyr')
    
        data(mtcars)
        
        characteristics <- unlist(str_split('disp hp', ' '))
    # the line above replaced characteristics <- paste('disp hp', collapse = ",")
        summarise_at(mtcars, .vars = vars(characteristics), mean)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多