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

如何在R中从数据框名称提取表型名并添加为该数据框的列?

解决方案

方法1:Base R原生实现

无需额外安装包,用基础函数就能完成需求:

  1. 先筛选出环境中符合条件的数据框名称
# 生成正则匹配规则,匹配以目标表型开头的字符串
match_pattern <- paste0("^(", paste(phenotypes, collapse="|"), ")")
# 找出所有符合规则的数据框
target_dfs <- ls(pattern = match_pattern)
  1. 循环为每个数据框添加Phenotype列
for(df_name in target_dfs) {
  # 从数据框名称中提取对应的表型
  pheno <- regmatches(df_name, regexec(match_pattern, df_name))[[1]][2]
  # 获取当前数据框
  df <- get(df_name)
  # 添加新列,值为提取到的表型
  df$Phenotype <- pheno
  # 将修改好的数据框放回全局环境
  assign(df_name, df)
}

方法2:用stringr简化操作

如果习惯使用tidyverse工具链,用stringr写起来更简洁:

library(stringr)

# 筛选出名称包含目标表型的数据框
target_dfs <- str_subset(ls(), paste(phenotypes, collapse="|"))

for(df_name in target_dfs) {
  # 提取匹配的表型名称
  pheno <- str_extract(df_name, paste(phenotypes, collapse="|"))
  # 为数据框加列并更新回环境
  assign(df_name, mutate(get(df_name), Phenotype = pheno))
}

注意事项

  • 两种方法会自动处理所有符合条件的数据框,无需手动逐个指定名称
  • 修改后的结果直接覆盖原数据框,不需要额外保存
  • 如果数据框名称里的表型不是在开头(比如acbd_phenotype1),只需去掉方法1中的^符号,或者直接用方法2就能匹配到

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:40:09