为什么';nrow()';函数不';似乎在';总结()';功能?
请参阅以下代码:为什么';nrow()';函数不';似乎在';总结()';功能?,r,R,请参阅以下代码: library(dslabs) data(gapminder) gapminder %>% filter(year %in% c(2010, 2015) & !is.na(population)) %>% group_by(year) %>% summarise(weight = nrow(population)) 为什么它会给我一个错误:“Columnweight的类型不支持NULL” nrow()接受一个向量作为参数,这里popul
library(dslabs)
data(gapminder)
gapminder %>%
filter(year %in% c(2010, 2015) & !is.na(population)) %>%
group_by(year) %>%
summarise(weight = nrow(population))
为什么它会给我一个错误:“Columnweight
的类型不支持NULL”
nrow()
接受一个向量作为参数,这里population
是一个向量内summary()
函数。所以,我想知道为什么它不起作用
注意:我知道这里的
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
因为您正在将
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
summary
要求其摘要函数的结果具有长度为1的结果和有效的列类型
> x = 1:3
> nrow(x)
NULL
> length(nrow(x))
[1] 0
> class(nrow(x))
[1] "NULL"
> typeof(nrow(x))
[1] "NULL"
应用于向量的
nrow
返回NULL
,其长度为0,class
为NULL
,并且类型为NULL
,这是无效的列类型
> x = 1:3
> nrow(x)
NULL
> length(nrow(x))
[1] 0
> class(nrow(x))
[1] "NULL"
> typeof(nrow(x))
[1] "NULL"
summary
要求其摘要函数的结果具有长度为1的结果和有效的列类型
> x = 1:3
> nrow(x)
NULL
> length(nrow(x))
[1] 0
> class(nrow(x))
[1] "NULL"
> typeof(nrow(x))
[1] "NULL"
应用于向量的nrow
返回NULL
,其长度为0,class
为NULL
,并且类型为NULL
,这是无效的列类型
> x = 1:3
> nrow(x)
NULL
> length(nrow(x))
[1] 0
> class(nrow(x))
[1] "NULL"
> typeof(nrow(x))
[1] "NULL"
nrow
是否返回一个等于行数的整数?nrow
应用于数据帧或矩阵时,返回一个等于行数的整数<代码>nrow
,应用于向量,则不会。(从技术上讲,向量没有行,它们只有一个长度。)因为您在问题中指定了向量,并说您对备选方案不感兴趣,所以我在问题中避免了这一点。也许你在想NROW
,它对向量更友好?好的,我知道了。哎呀!巨掌!从文档中,完全不清楚nrow()是否仅适用于数据帧。nrow是否返回一个整数,该整数等于行数?nrow
,应用于数据帧或矩阵,返回一个整数,即行数<代码>nrow
,应用于向量,则不会。(从技术上讲,向量没有行,它们只有一个长度。)因为您在问题中指定了向量,并说您对备选方案不感兴趣,所以我在问题中避免了这一点。也许你在想NROW
,它对向量更友好?好的,我知道了。哎呀!巨掌!从文档中,完全不清楚nrow()是否只适用于数据帧。那么nrow()
应该如何工作呢?我不明白你的第一句话,谢谢。好的,我明白了。哎呀!巨掌!从文档中完全不清楚nrow()
是否只适用于数据帧。@Hemanthabakayanrow
和nrow
的文档在同一页上。所以你可能会因此感到困惑nrow
在数据帧上工作,nrow
在数据帧和向量上工作,但它们是不同的函数。那么nrow()
应该如何工作呢?我不明白你的第一句话,谢谢。好的,我明白了。哎呀!巨掌!从文档中完全不清楚nrow()
是否只适用于数据帧。@Hemanthabakayanrow
和nrow
的文档在同一页上。所以你可能会因此感到困惑nrow
适用于数据帧,nrow
适用于数据帧和向量,但它们是不同的函数。