R将chr类型run_date转为Date时报错Only strings can be converted to symbols怎么办
错误原因
- 核心问题是代码拼写错误:你把dplyr
mutate_at函数用于列选择的vars()误写为了基础包求方差的var()函数var()返回的是数值计算结果,无法被识别为列选择的符号对象,因此触发"Only strings can be converted to symbols"错误- 你过往在其他dataframe上能运行成功,大概率是其他场景下你正确拼写了
vars(),本次属于手误
修复方案
方案1:修正原代码拼写
直接将var替换为vars即可正常运行:
zUXQ_Boxes_Master <- zUXQ_Boxes_Master %>% mutate_at(vars(run_date), as.Date)
方案2:使用新版dplyr语法(更推荐)
从dplyr 1.0.0版本开始,官方已弃用mutate_at系列函数,推荐使用mutate结合across完成列操作,写法更简洁易懂:
# 仅修改run_date列 zUXQ_Boxes_Master <- zUXQ_Boxes_Master %>% mutate(run_date = as.Date(run_date))
如果需要同时修改多个符合规则的列,across的优势会更明显,示例如下:
# 修改所有后缀为_date的列为日期类型 zUXQ_Boxes_Master <- zUXQ_Boxes_Master %>% mutate(across(ends_with("_date"), as.Date))
内容的提问来源于stack exchange,提问作者mdutton27
相关产品推荐
相关产品推荐

