当我在没有逗号的数据框中提取列时返回多列
Multiple columns returned when I extract a column in a data frame without comma
我正在做一个关于从数据框中提取数据的 R 练习。数据如下:
team_name <- c("Bulls", "Warriors")
wins <- c(72, 73)
losses <- c(10, 9)
is_champion <- c(TRUE, FALSE)
season <- c("1995-96", "2015-16")
great_nba_teams <- data.frame(team_name, wins, losses, is_champion, season)
提取行没有问题,我理解代码中矢量名称后需要逗号:
filter <- great_nba_teams$is_champion == TRUE
great_nba_teams[filter,]
team_name wins losses is_champion season
1 Bulls 72 10 TRUE 1995-96
但是,当我尝试不使用逗号时,我无法提取 is_champion
列。相反,其他列是 returned.
> great_nba_teams[filter]
team_name losses season
1 Bulls 10 1995-96
2 Warriors 9 2015-16
与great_nba_teams[,filter]
相同。我能知道[filter]
是什么意思,为什么和[,filter]
一样吗?为什么代码没有 return is_champion
的数据?
非常感谢。
数据框是列的列表(通常是向量,并且长度必须相同)。所以当你使用
great_nba_teams[过滤器]
它 returns 过滤器为 TRUE 的列表元素(即列)。这是不正确的,因为过滤器旨在应用于行,而不是列。过滤器实际上是 c(TRUE, FALSE),只有 2 个元素长,所以它被回收到长度 5,即 c(TRUE, FALSE, TRUE, FALSE, TRUE) 这就是为什么你得到奇数列的原因。
great_nba_teams[过滤器]
returns 过滤器为 TRUE 的列的所有行。也不是过滤器的意图。
great_nba_teams[过滤器,]
returns 仅过滤器为 TRUE 的行,但所有列。
PS:不要使用'filter'作为变量名,因为它是一个普通的函数名。这种滤镜我一般用'i'。
我正在做一个关于从数据框中提取数据的 R 练习。数据如下:
team_name <- c("Bulls", "Warriors")
wins <- c(72, 73)
losses <- c(10, 9)
is_champion <- c(TRUE, FALSE)
season <- c("1995-96", "2015-16")
great_nba_teams <- data.frame(team_name, wins, losses, is_champion, season)
提取行没有问题,我理解代码中矢量名称后需要逗号:
filter <- great_nba_teams$is_champion == TRUE
great_nba_teams[filter,]
team_name wins losses is_champion season
1 Bulls 72 10 TRUE 1995-96
但是,当我尝试不使用逗号时,我无法提取 is_champion
列。相反,其他列是 returned.
> great_nba_teams[filter]
team_name losses season
1 Bulls 10 1995-96
2 Warriors 9 2015-16
与great_nba_teams[,filter]
相同。我能知道[filter]
是什么意思,为什么和[,filter]
一样吗?为什么代码没有 return is_champion
的数据?
非常感谢。
数据框是列的列表(通常是向量,并且长度必须相同)。所以当你使用
great_nba_teams[过滤器]
它 returns 过滤器为 TRUE 的列表元素(即列)。这是不正确的,因为过滤器旨在应用于行,而不是列。过滤器实际上是 c(TRUE, FALSE),只有 2 个元素长,所以它被回收到长度 5,即 c(TRUE, FALSE, TRUE, FALSE, TRUE) 这就是为什么你得到奇数列的原因。
great_nba_teams[过滤器]
returns 过滤器为 TRUE 的列的所有行。也不是过滤器的意图。
great_nba_teams[过滤器,]
returns 仅过滤器为 TRUE 的行,但所有列。
PS:不要使用'filter'作为变量名,因为它是一个普通的函数名。这种滤镜我一般用'i'。