R语言使用sample抽样时如何获取数据框未选中的行索引?
R中获取sample抽样未选中行索引的方法
你可以通过以下两种常用方法实现需求:
- 方法1:使用
setdiff()求差集(最简洁)setdiff()会返回第一个向量中不在第二个向量里的元素,正好对应未被抽中的行索引,代码如下:
# 沿用你示例中的变量 unselected_rid <- setdiff(seq_len(nrow(df)), rid) # 输出验证 print(unselected_rid) # 运行结果:[1] 1 4 5
你可以直接用这个索引提取未选中的行:df[unselected_rid, ]
- 方法2:使用
%in%逻辑匹配取反
如果需要自定义判断逻辑,可以用匹配运算符结合取反实现:
all_row_index <- seq_len(nrow(df)) unselected_rid <- all_row_index[!all_row_index %in% rid] print(unselected_rid) # 运行结果:[1] 1 4 5
两种方法的差异很小:setdiff()会自动对结果做升序排序,逻辑匹配法会保留原行索引的排列顺序,对于行索引这类本身就是升序的序列,两种方法返回结果完全一致。
内容的提问来源于stack exchange,提问作者iGada
相关产品推荐
相关产品推荐

