使用mutate_at运行pivot vignette示例时出现parse_vector()错误求助
问题解决方法
错误原因
报错is.character(x) is not TRUE,核心问题有两个可能:
- 未加载
readr包,parse_date()是该包的专属函数,未加载时会导致调用异常; mutate_at是dplyr旧版语法,新版兼容性不如mutate(across(...))。
修正方案
方案1:加载依赖包+使用新版dplyr语法
library(tidyverse) # 一次性加载dplyr和readr family <- tribble( ~family, ~dob_child1, ~dob_child2, ~gender_child1, ~gender_child2, 1L, "1998-11-26", "2000-01-29", 1L, 2L, 2L, "1996-06-22", NA, 2L, NA, 3L, "2002-07-11", "2004-04-05", 2L, 2L, 4L, "2004-10-10", "2009-08-27", 1L, 1L, 5L, "2000-12-05", "2005-02-28", 2L, 1L, ) # 用across替代mutate_at,明确指定readr的parse_date函数 family <- family %>% mutate(across(starts_with("dob"), readr::parse_date))
方案2:使用基础R函数替代
如果不想依赖readr包,直接用基础R的as.Date即可,无需额外加载包:
library(dplyr) family <- family %>% mutate(across(starts_with("dob"), as.Date))
验证
运行完修正代码后,用str(family)查看结构,会看到dob_child1和dob_child2列类型变为Date,说明转换成功。
内容的提问来源于stack exchange,提问作者rez
相关产品推荐
相关产品推荐

