在R语言中,有没有更优的方法用另一个数据框替换某数据框的列?
几种更优雅的DataFrame列替换方法
dplyr批量替换(推荐)
不用手动逐个指定列名,自动匹配iris2的列名完成批量替换,适合iris2列数较多的场景:iris <- iris %>% mutate(across(all_of(names(iris2)), ~ iris2[[cur_column()]]))这里
all_of(names(iris2))精准选中iris里和iris2同名的列,cur_column()会自动获取当前处理的列名,对应提取iris2里的同列数据,一步完成所有目标列的替换。Base R极简写法
不需要额外加载包,一行代码直接搞定,逻辑直白:iris[names(iris2)] <- iris2通过列名索引直接覆盖iris中对应列的全部数据,简单高效。
purrr函数式实现
如果你习惯purrr的函数式编程风格,可以用以下写法:library(purrr) library(dplyr) iris <- iris %>% select(-all_of(names(iris2))) %>% bind_cols(imap_dfc(iris2, ~ set_names(list(.x), .y)))先移除iris中需要替换的旧列,再用
imap_dfc遍历iris2的列(.x为列数据,.y为列名),给新列命名后合并回原数据框。
内容的提问来源于stack exchange,提问作者Hank Lin
相关产品推荐
相关产品推荐

