运行dplyr代码报错:无适用于类‘c('matrix','array','list')’对象的'tbl_vars'方法
问题原因及解决办法
错误原因
rename_at是dplyr包专为tidy表格对象(比如data.frame、tibble)设计的列重命名函数,而你的overallclaimspaid对象当前类型是matrix/array/list,这类对象不支持dplyr的tbl_vars方法(该方法用于识别表格列名),因此触发报错。
解决步骤
1. 确认对象类型
先执行以下代码确认overallclaimspaid的具体类型:
class(overallclaimspaid)
2. 转换为dplyr兼容的表格对象
根据对象类型做对应转换,再执行重命名:
- 如果是matrix/array:转成data.frame或tibble
# 转换为data.frame后重命名 overallclaimspaid <- as.data.frame(overallclaimspaid) %>% rename_at(vars(oldnames), ~ newnames) head(overallclaimspaid)
- 如果是list:若list是按列存储的结构,同样转成data.frame
overallclaimspaid <- as.data.frame(overallclaimspaid) %>% rename_at(vars(oldnames), ~ newnames)
3. 推荐使用新版dplyr语法
dplyr已推荐用rename_with替代旧版的rename_at,写法更清晰:
overallclaimspaid <- as.data.frame(overallclaimspaid) %>% rename_with(~ newnames, all_of(oldnames))
内容的提问来源于stack exchange,提问作者Benson Ongocho
相关产品推荐
相关产品推荐

