【问题标题】:How do I write these using pipes in R?如何在 R 中使用管道编写这些?
【发布时间】:2019-11-16 23:32:37
【问题描述】:

如何使用管道获取子组?我不明白为什么我写的东西不起作用。有人能解释一下这些是如何工作的吗?在线阅读和在线查看示例对我没有帮助,因为我不确定我不理解什么?

mean(mtcars$qsec)



mtcars %>%
    select(qsec) %>%
    mean()

警告信息: 在 mean.default(.) 中:参数不是数字或逻辑:返回 NA

mean(mtcars$qsec[mtcars$cyl==8])

mtcars %>%
     group-by(qsec) %>%
     filter(cyl==8)
     mean()

mean.default() 中的错误:缺少参数“x”,没有默认值

mean(mtcars$mpg[mtcars$hp > median(mtcars$hp)])

mtcars %>%
    group_by(mpg)  %>%
    filter(hp>median(hp))
    mean

【问题讨论】:

    标签: r pipe tidyverse aggregates


    【解决方案1】:

    原因是select 仍然返回一个带有一列的data.frame,而mean 期望基于?meanvector

    x - 一个 R 对象。目前有用于数字/逻辑向量和日期、日期时间和时间间隔对象的方法。仅在 trim = 0 时允许使用复向量。

    我们可以使用pull 将列提取为vector 并在其上应用mean

    library(dplyr)
    mtcars %>%
       pull(qsec) %>%
       mean
    #[1] 17.84875
    

    在第二种情况下,我们得到了 'qsec' 的 mean,其中 'cyl' 是 8

    mtcars %>%
       select(qsec, cyl) %>%
       filter(cyl == 8) %>% 
       pull(qsec) %>%
       mean
    #[1] 16.77214
    

    【讨论】:

    • 非常感谢您解决这个问题。这是我最后一个。 mtcars %>% select(mpg,hp) %>% filter(hp>median(hp)) %>% pull(mpg) %>% mean
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多