R语言中rename()函数修改列名后为何无法生效?
问题原因
tidyverse中的rename()函数不会直接修改原始数据集,它只会返回一个重命名后的新数据框。你执行rename(diamonds, carat_new = carat)后,没有将这个新数据框保存到变量中,后续的summarise()依然调用的是未修改的原始diamonds数据集,自然找不到carat_new这个列名。
解决方法
方法1:赋值保存重命名后的数据集
将rename()的结果赋值给变量(可以覆盖原变量,也可以使用新变量名):
install.packages("tidyverse") library(tidyverse) # 覆盖原diamonds变量 diamonds <- rename(diamonds, carat_new = carat) # 基于修改后的数据集计算均值 summarise(diamonds, mean_carat = mean(carat_new))
方法2:使用管道操作串联步骤
利用tidyverse的管道符%>%,让数据在函数间自动传递,无需手动赋值:
install.packages("tidyverse") library(tidyverse) diamonds %>% rename(carat_new = carat) %>% summarise(mean_carat = mean(carat_new))
内容的提问来源于stack exchange,提问作者Debrup Mukherjee
相关产品推荐
相关产品推荐

