首页 > 解决方案 > R进一步选择拆分列表

问题描述

我有一个包含 31 列和 10000 多行的数据集:

我已经根据 3 列分离了数据:Seanson、stage 和 Team,因此它在每个阶段的每个 seanson 中分离了团队。

sep_team_season_stage<-split(data,f=list(data$Season,data$Stage,data$Team), drop = TRUE)

它返回了一堆包含 31 列的子列表,我希望子集只有 7 列:

"Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS"

所以我这样做:

sep_team_season_stage[c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")]

表明:

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

但是当我调用其中一个子列表时,它可以工作:

sep_team_season_stage$`1999 - 2000.Regular_Season.BOS`[c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")]

如何让它在每个列表上工作?

标签: rdataframesplit

解决方案


使用lapply

cols <- c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")
lapply(sep_team_season_stage, `[`, cols)

但是,我同意 Karthik 的观点,最好先对数据进行子集化,然后再执行,split这样您就可以避免这一步。

sep_team_season_stage <- split(data[cols], 
                              list(data$Season,data$Stage,data$Team))

推荐阅读