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

如何在R中按行条件删除列:移除每行值为“o”的列

R数据框逐行删除值为"o"的列实现方案

由于每行保留的列数量可能不同,最终结果默认以列表形式存储,列表中每个元素对应原数据框一行筛选后的子数据框,保留原列名。

实现代码

# 逐行处理逻辑
row_filtered_list <- apply(stocks_grid2, 1, function(cur_row) {
  # 筛选当前行值不等于"o"的列
  keep_col_flag <- cur_row != "o"
  # 若当前行全为"o"可自行调整返回逻辑,此处默认返回空数据框
  if (sum(keep_col_flag) == 0) {
    return(data.frame())
  }
  # 转为单行数据框,保留原有列名
  return(as.data.frame(t(cur_row[keep_col_flag]), check.names = FALSE))
})

效果验证

取原数据第3行的处理结果验证:

print(row_filtered_list[[3]])

输出符合预期:

Var2
3 Var2

补充说明

如果需要将结果合并为统一的规整数据框(空缺位置填充为NA),可额外执行以下代码:

library(dplyr)
merged_df <- bind_rows(row_filtered_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:36:01