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

R语言如何获取包含至少一个TRUE值的列的索引?

解决方案

方法1:基于已生成的逻辑表df_lgl计算

你之前直接使用which(df_lgl == TRUE)得到的是元素的全局位置,是因为没有按列聚合判断。我们可以先按列统计TRUE的数量,再提取符合要求的列索引:

which(colSums(df_lgl) > 0)

运行上述代码将返回结果[1] 3,和预期一致。原理是逻辑值求和时TRUE等价于1、FALSE等价于0,只要列求和结果大于0,就说明该列存在至少一个TRUE。

方法2:无需自定义函数,一步直接计算

你可以跳过自定义find_twin函数、生成df_lgl的步骤,直接判断df2的每一列是否存在与df1$a重合的值,代码更简洁高效:

  • 基础R实现:
which(sapply(df2, function(col) any(col %in% df1$a)))
  • tidyverse风格实现:
which(map_lgl(df2, ~ any(.x %in% df1$a)))

上述两种写法都会直接返回符合要求的列索引,同时不需要存储完整的逻辑中间表,内存占用更低。如果有多列符合要求,会自动返回所有对应列索引组成的向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:09:00