R语言使用dplyr的mutate生成dataframe新列不显示及调用报错问题
问题核心原因
- dplyr 中的
mutate函数不会直接修改传入的原始数据集,只会返回新增/修改列后的新数据集。原代码没有将mutate的运行结果赋值给变量,所以原始的heights对象始终没有新增ht_cm列,调用heights$ht_cm会返回NULL,计算均值时自然会报参数非数值的错误。 mutate函数本身不存在stringsAsFactor参数,原代码里写的这个参数完全无效,对结果没有任何影响。你误以为新增列是字符类型属于误判,本质是该列根本不存在于原始数据集中。
修正方案
将mutate返回的结果赋值回原变量(或赋值给新变量)即可,修正后代码如下:
library(dslabs) data(heights) library(dplyr) # 把mutate返回的新数据集赋值回heights,覆盖原有对象 heights <- mutate(heights, ht_cm = height * 2.54) str(heights) # 此时可正常查看到ht_cm列,类型为数值型 mean(heights$ht_cm) # 可正常计算均值
补充说明
如果不想覆盖原始的heights数据集,可以将结果赋值给新变量,例如heights_new <- mutate(heights, ht_cm = height * 2.54),后续操作都使用新变量即可。
内容的提问来源于stack exchange,提问作者Data Scientist to be
相关产品推荐
相关产品推荐

