r - 为什么 'nrow()' 函数似乎在 'summarise()' 函数中不起作用?
问题描述
请参阅以下代码:
library(dslabs)
data(gapminder)
gapminder %>%
filter(year %in% c(2010, 2015) & !is.na(population)) %>%
group_by(year) %>%
summarise(weight = nrow(population))
为什么它给我一个错误:“ Column weight
is of unsupported type NULL ”?
nrow()
接受向量作为参数,这里population
是函数内部的向量summarise()
。所以,我想知道为什么它不起作用?
注意:我知道nrow()
这里的替代方案,我不是在寻找可行的替代代码。我的问题是概念性的,特别与“为什么”有关。
解决方案
因为您要传递nrow
给列名,即NULL
. 参见例如:
nrow(mtcars$mpg)
#NULL
nrow
接受数据框而不是向量:
nrow(mtcars)
#[1] 32
但是,还有一个NROW
接受向量的函数,因此您可以在这里使用它:
library(dplyr)
gapminder %>%
filter(year %in% c(2010, 2015) & !is.na(population)) %>%
group_by(year) %>%
summarise(weight = NROW(population))
但是,如果您正在使用dplyr
并且想要计算每个组中的行数,那么dplyr
生态系统中有一些专门的功能,例如:
gapminder %>%
filter(year %in% c(2010, 2015) & !is.na(population)) %>%
group_by(year) %>%
summarise(weight =n())
# A tibble: 2 x 2
# year weight
# <int> <int>
#1 2010 185
#2 2015 185
或与count
:
gapminder %>%
filter(year %in% c(2010, 2015) & !is.na(population)) %>%
count(year)
推荐阅读
- python - 如何加入这些主题
- windows - 得到错误:bash:(程序):无法执行二进制文件:执行格式错误,在 32 位和 64 位 Windows 上
- javascript - 使用 Apollo 3.x 在子组件中执行查询时更新父组件 UI
- css - AgGrid:用于调整列大小的自定义调整大小图标
- css - 如何在 NG-ZORRO 中使 textarea 适合其父元素的高度?
- arm - 如何检查 objdump 是否为正确的架构反汇编二进制文件?
- sql - 仅当行数大于 10 时才返回行
- python - 在 Python 中创建带有目录条目的 zipfile
- typescript - 无法使用 Object.entries 分配值
- asterisk - 什么是 Asterisk Dial() 选项来调用从被叫方收到的“正在振铃”状态的子程序?