R语言如何为列表内所有数据框批量添加原生行名作为唯一标识列
R语言实现批量为列表内所有数据框新增行名列的解决方案
方案1:基础R实现(无需额外安装包)
直接使用lapply遍历列表的所有元素即可,不管列表包含几百个元素都可以一次性处理完成,且不会修改原数据框的原生行名:
outcome <- lapply(outcome, function(df) { df$unique_id <- rownames(df) return(df) })
如果需要保留原始的outcome列表不被覆盖,把赋值左侧的变量名改为其他名称即可,比如outcome_new。
方案2:tidyverse风格实现
习惯使用tidyverse生态的用户可以用purrr::map搭配dplyr::mutate实现,写法更简洁:
library(purrr) library(dplyr) outcome <- map(outcome, ~ mutate(.x, unique_id = rownames(.x)))
效果验证
处理完成后可以调用以下代码验证结果是否符合预期:
# 查看第一个数据框的前几行 head(outcome[[1]])
输出中可以看到新增的unique_id列取值和原生行名完全一致,原有行名也没有被修改。
内容的提问来源于stack exchange,提问作者vog
相关产品推荐
相关产品推荐

