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

指定任意数据行,查找该行值为1的单元格对应的所有列名

解决方案

以下是针对该需求的R语言实现,包含基础R和tidyverse两种实现方式:

步骤1:构造示例数据集

df <- data.frame(
  X1 = c(1,1,1,1,3,2),
  X2 = c(2,3,3,1,4,1),
  X3 = c(1,2,4,2,3,3),
  X4 = c(3,1,2,3,2,4)
)

方式1:基础R实现

直接通过逻辑判断筛选符合条件的列名:

# 封装为可复用函数,支持传入数据集和指定行号
get_one_cols <- function(data, row_idx) {
  # 行号合法性校验
  if (row_idx < 1 || row_idx > nrow(data)) {
    stop("指定行号超出数据集的有效范围")
  }
  # 筛选值为1的列,返回对应列名
  names(data)[which(data[row_idx, ] == 1)]
}

测试效果

get_one_cols(df, 1)
# 输出:"X1" "X3"
get_one_cols(df, 2)
# 输出:"X1" "X4"
get_one_cols(df, 3)
# 输出:"X1"

方式2:tidyverse风格实现

如果常用tidyverse生态,可使用以下写法:

library(dplyr)

get_one_cols_tidy <- function(data, row_idx) {
  if (row_idx < 1 || row_idx > nrow(data)) {
    stop("指定行号超出数据集的有效范围")
  }
  data %>%
    slice(row_idx) %>%
    select(where(~ .x == 1)) %>%
    names()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:39:03