【发布时间】:2019-07-04 17:54:34
【问题描述】:
@gented 的回答 here 演示了如何从 data.table 中随机选择行的子集。
如果我想选择 data.table 中某一列中的值满足特定条件的所有行,并另外从 data.table 中选择同一列中的值的随机行子集,该怎么办?满足不同的条件?
假设,例如,我想要从mtcars data.table 中随机抽取 5 行样本,其中 cyl == 6, 和 cyl == 8 的所有行。
这是否比以下方式更好:
rbind(
mtcars[ cyl == 8 ],
mtcars[ cyl == 6 ][ sample(.N, 5) ]
)
也就是说,我是否可以将data.table 子集到一组[] 中,以便例如在该调用中应用一个函数(以lapply(.SD, function) 格式)?
这显然没有达到预期的结果,但与我正在寻找的语法相似:
mtcars[
cyl == 8 | ( cyl == 6 & sample( .N, 5 ) ),
lapply(.SD, generic_funciton),
.SDcols = (specific_cols)
]
【问题讨论】:
标签: r data.table