能否使用janitor::clean_names仅清洗数据框中指定列的列名?
仅清洗数据框部分列名的解决方案
要实现只清洗数据框中指定列的列名,直接用clean_names()处理整个数据框无法满足需求,推荐以下两种可行方法:
方法1:结合dplyr的rename_with函数
通过rename_with指定要处理的列范围,再调用janitor::make_clean_names对目标列名进行清洗:
library(dplyr) library(janitor) # 仅清洗前2列列名,其余列名保持原样 iris_part_clean <- iris %>% rename_with(make_clean_names, 1:2)
方法2:基础R写法
如果不依赖dplyr,可直接提取目标列的列名处理后替换回原数据框:
library(janitor) # 提取前2列列名并清洗,再赋值回原数据框 colnames(iris)[1:2] <- make_clean_names(colnames(iris)[1:2])
之前的写法无效原因
iris %>% janitor::make_clean_names(1:2):这里是把数字1和2作为输入转换为清洗后的列名,完全没有用到iris的原有列名,逻辑错误。iris %>% janitor::clean_names(.[,1:2]):这种写法是先提取iris的前2列,对这两列做全列名清洗后仅返回这两列,并非在原数据框基础上修改部分列名。
内容的提问来源于stack exchange,提问作者lilblue
相关产品推荐
相关产品推荐

