R语言:将数据框首列列名追加至后续列非NA字符串后(支持列表)
解决方案
核心处理函数
先定义一个处理单个数据框的函数,自动适配任意列数:
library(dplyr) process_single_df <- function(df) { # 提取第一列的列名 first_col_title <- colnames(df)[1] # 批量处理除第一列外的所有列 df %>% mutate(across(-1, ~ifelse(!is.na(.), paste(., first_col_title, sep = " - "), .))) }
处理数据框列表
方式1:用purrr实现优雅遍历(推荐)
借助purrr包的map函数,无需手动写循环:
library(purrr) # 假设你的数据框列表名为 df_list processed_list <- map(df_list, process_single_df)
方式2:用for循环实现
如果偏好传统for循环,也可以这样写:
# 初始化空列表存储结果 processed_list <- vector("list", length(df_list)) for (idx in seq_along(df_list)) { processed_list[[idx]] <- process_single_df(df_list[[idx]]) }
效果验证
以你提供的示例数据框为例:
# 构造示例数据框 sample_df <- tibble( `Basics Chest` = c(NA, NA, NA, NA), Anatomie = c(NA, NA, NA, "CT Protokolle Chest Standard"), Atlas = c("Xray", "CT", "PET-CT", NA) )
处理后输出结果:
# A tibble: 4 × 3 `Basics Chest` Anatomie Atlas <lgl> <chr> <chr> 1 NA NA Xray - Basics Chest 2 NA NA CT - Basics Chest 3 NA NA PET-CT - Basics Chest 4 NA CT Protokolle Chest Standard - Basics Chest NA
内容的提问来源于stack exchange,提问作者Sphenoidale
相关产品推荐
相关产品推荐

