R语言如何将dataframe字段名中的所有下划线替换为空格
报错原因
str_replace_all()需要依次传入待处理字符串(此处为列名)、匹配模式、替换值三个参数,你原有写法直接给rename_all()传入str_replace_all('_', ' '),缺失了待处理的列名参数,因此触发参数缺失报错。
另外补充:rename_all属于dplyr早期的作用域动词,目前已被更灵活的rename_with取代,推荐优先使用新函数。
正确实现方案
方案1:tidyverse 生态写法(dplyr + stringr)
library(dplyr) library(stringr) mydf <- mydf %>% # .x指代每一个待处理的列名 rename_with(~ str_replace_all(.x, pattern = "_", replacement = " "))
如果要兼容旧版dplyr的rename_all,写法如下:
mydf <- mydf %>% rename_all(function(x) str_replace_all(x, "_", " "))
方案2:纯Base R 写法(无需加载第三方包)
colnames(mydf) <- gsub(pattern = "_", replacement = " ", x = colnames(mydf))
结果验证
运行上述任意一种方案后,查看列名即可确认替换成功:
colnames(mydf) # 输出:[1] "SOME FIELD" "ANOTHER FIELD"
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

