You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从R数据框中选取满足条件行的前后行(去重)

解决方案:获取条件行及其前后行的索引(高性能Base R实现)

针对你需要从大数据框中快速提取所有TRUE行及其前后一行索引(去重)的需求,这里提供一个纯Base R的高效实现方案:

# 示例数据框
df <- data.frame(x=c(TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE))

# 1. 定位所有值为TRUE的行索引
true_rows <- which(df$x)

# 2. 生成包含目标行、前一行、后一行的索引集合,去重并排序
all_candidates <- unique(sort(c(true_rows, true_rows - 1, true_rows + 1)))

# 3. 过滤掉超出数据框行范围的无效索引
final_indices <- all_candidates[all_candidates >= 1 & all_candidates <= nrow(df)]

# 输出结果
final_indices

方案说明

  • 性能优先:全程使用向量运算,没有循环操作,Base R的向量处理是底层优化过的,能高效应对超大数据框。
  • 去重与排序:unique()自动合并重复索引(比如示例中第7行既是第6行的后一行,也是第8行的前一行,只会保留一次),sort()保证结果按行号升序排列。
  • 边界处理:最后一步过滤掉小于1或大于总行数的无效索引,避免出现不存在的行号。

运行上述代码后,会得到你期望的结果:[1] 1 2 4 5 6 7 8

内容的提问来源于stack exchange,提问作者Dylan Hettinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:37:04