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

如何在R数据框中按行提取值<0.05的列名至新列?

实现方法

完全可以实现,下面提供两种常用的解决方案:

基础R方法

无需额外加载包,用原生函数即可完成:

# 构造你的数据框
df <- structure(list(Suggested.Symbol = c("CCT4", "DHRS2", "PMS2", 
"FARSB", "RPL31", "ASNS"), p_onset = c(0.9378, 0.5983, 7.674e-10, 
0.09781, 0.5495, 0.7841), p_dc14 = c(0.3975, 0.3707, 6.117e-17, 
0.2975, 0.4443, 0.7661), p_tfc6 = c(0.2078, 0.896, 7.388e-19, 
0.5896, 0.3043, 0.6696), p_tms30 = c(0.5724, 0.3409, 4.594e-13, 
0.2403, 0.1357, 0.3422)), row.names = c(NA, 6L), class = "data.frame")

# 筛选所有以p_开头的列(即需要判断的p值列)
p_cols <- grep("^p_", colnames(df), value = TRUE)

# 逐行处理,生成summary列
df$summary <- apply(df[p_cols], 1, function(row) {
  # 选出当前行中值小于0.05的列名,用逗号分隔拼接
  paste(names(row)[row < 0.05], collapse = ", ")
})

tidyverse方法

如果你习惯使用dplyr等tidyverse工具,可以用更简洁的行处理方式:

library(dplyr)

df <- df %>%
  mutate(
    summary = pmap_chr(select(., starts_with("p_")), ~{
      vals <- c(...)
      # 筛选值小于0.05的列名并拼接
      names(vals)[vals < 0.05] %>% paste(collapse = ", ")
    })
  )

执行后查看结果,PMS2对应的summary列会显示p_onset, p_dc14, p_tfc6, p_tms30,其余行因无符合条件的p值会显示空字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:45:41