r - 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")]
如何让它在每个列表上工作?
解决方案
使用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))
推荐阅读
- python - 有什么方法可以在 Windows 中使用命令行安装 Python。?
- pytorch - 使用多处理在 CPU 上运行变形金刚预测
- firebase - 将 Firebase 函数下载或同步到本地环境
- file - 一个文件到不同文件的结果之间的 VSCode 超链接:行
- arrays - 如何在 Kotlin 中调试以下错误?
- ios - iOS 13:如何获取通用设备语言?
- postgresql - 在 Postgres 中的索引上插入具有 ExclusiveLock 的块
- c++ - 为什么 reinterpret_cast 只对 0 有效?
- iis - 如果在 Windows 身份验证下选择 Negotiate:kerberos 作为提供程序,IIS Web 应用程序将停止工作
- python - 有没有什么简单的方法可以根据他们的位置而不是 kwargs 来传递参数。像 kwargs 的位置版本?