值列表与数据集的as.list之间的差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了值列表与数据集的as.list之间的差异相关的知识,希望对你有一定的参考价值。

问题是,在下一个示例中,如果我使用通过过滤数据集创建的列表,则查询不会给出结果,而如果我创建具有相同结果但写为字符串的列表,则它可以工作。

我有这个足球队的数据集。我应该参加南方队(那不勒斯,卡利亚里,克罗托内和巴勒莫)的比赛。我试过两种方式:

  1. 通过过滤football_ratings数据帧来创建列表
south_teams<- football_ratings %>%
  filter(region=="South") %>%
  select(HomeTeam) %>%
  as.list()

# "Napoli"   "Cagliari" "Crotone"  "Palermo" 
  1. 创建具有相同结果的字符串列表
south_teams<- c("Napoli","Cagliari","Crotone","Palermo")

如果我使用第二个列表过滤数据集,我会获得一个包含140行的表。如果我尝试对第一个列表执行相同操作,则会获得一个包含0行的表。

如果我使用第二个列表过滤数据集,我会获得一个包含140行的表。如果我尝试对第一个列表执行相同操作,则会获得一个包含0行的表。

football_matches %>%
  filter(HomeTeam %in% south_teams | AwayTeam %in% south_teams)

我怎样才能解决这个问题?

答案

让我们假装这是你的第一个清单

south_teams <- tibble(HomeTeam = c("Napoli","Cagliari","Crotone","Palermo")) %>% 
  as.list()

如果我们看看结果,我们会看到

south_teams
# $`HomeTeam`
# [1] "Napoli"   "Cagliari" "Crotone"  "Palermo" 

所以你需要south_teams$HomeTeam,而不是south_teams例如:

"Napoli" %in% south_teams
# [1] FALSE
"Napoli" %in% south_teams$HomeTeam
# [1] TRUE

以上是关于值列表与数据集的as.list之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

r 中数据集的最大值和最小值

5. 列表和数据框

如何知道数组中偶数索引值之和与奇数索引值之和之间的差异(递归代码)

片段之间的共享数据(父列表视图和子列表视图)

Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加

Pandas 按行中的值和其他列中的值在行之间进行差异