如何在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
相关产品推荐
相关产品推荐

