【问题标题】:Can I get dplyr output as value, and not as data frame?我可以将 dplyr 输出作为值,而不是作为数据框吗?
【发布时间】:2021-07-13 19:07:21
【问题描述】:

有一个特定的反复出现的问题非常令人沮丧,我无法在 dplyr 中找出正确的方法。

如何让 dplyr 将“结果”保存为数值,而不是 tibble 数据框?

代码:

library(tidyverse)
library(nycflights13)
flights <- flights


a <- flights %>% filter(carrier == "AA") %>% length()

b <- flights %>% filter(carrier == "AA") %>% mean()

c <- flights %>% filter(carrier == "AA") %>% summarise(mean(hour))

这三行代表了我的挫败感。

一个。为什么'a'起作用,即它返回一个值? (额外的问题,为什么在全球环境中 19 旁边有字母 L?)

b.为什么这不起作用?如果您将其与上面的行进行比较,它似乎“应该”。

c。这有点的工作原理是我得到了平均值 - 但我如何将它作为一个值来获取(我想在其他计算中使用这个值,所以我不想要一个数据框)。

很明显,dplyr 有一些细微差别,到目前为止我还没有理解。 任何帮助将不胜感激!

解决方案:

mean <- flights %>% filter(carrier == "AA") %>% pull(hour) %>% mean()

pull() 提取单列

L 表示整数

谢谢大家!

【问题讨论】:

标签: r dplyr tidyverse


【解决方案1】:

a. length() 返回对象中元素的数量。当对象是 data.frame(或 tibble)时,它将返回列数。数字后面的L 表示它是一个整数。

b. mean() 需要一个数字向量才能工作。在 b 中,您将 tibble 传递给函数。

c. dplyr 函数用于接收小标题作为输入并生成小标题作为输出。您可以pull() tibble 的一列,使其成为向量。

c <- flights %>% filter(carrier == "AA") %>% pull(hour) %>% mean()

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 2020-08-11
    • 2017-03-05
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多