为何R语言cor()函数在该数据集上报错?求正确用法
问题描述
给定如下数据集:
library(tidyverse) dat <- structure(list(truth.agg = c(5, 4, 4, 8, 3, 2, 3, 8, 6, 8, 9, 8, 7, 6, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8, 5, 7, 9, 5), .pred = c(4.73240566253662, 4.73240566253662, 4.73240566253662, 5.15031337738037, 2.28486394882202, 4.60455703735352, 4.60455703735352, 8.46518325805664, 5.62833499908447, 7.93664407730103, 7.9920597076416, 8.2073917388916, 7.03494453430176, 6.60951709747314, 7.9366512298584, 8.44983863830566, 7.17515993118286, 7.9701943397522, 7.94902610778809, 8.11329460144043, 7.66316652297974, 7.51529359817505, 8.374342918396, 8.19860172271729, 7.70432281494141, 7.67850542068481, 4.99736976623535, 6.99806356430054, 8.00393962860107, 6.09957933425903)), row.names = c(NA, -30L), class = c("tbl_df", "tbl", "data.frame"))
数据集预览:
> dat # A tibble: 30 × 2 truth.agg .pred <dbl> <dbl> 1 5 4.73 2 4 4.73 3 4 4.73 4 8 5.15 5 3 2.28 6 2 4.60 7 3 4.60 8 8 8.47 9 6 5.63 10 8 7.94 # … with 20 more rows # ℹ Use `print(n = ...)` to see more rows
执行相关性计算代码cor(dat$truth.agg, dat$.pred)时,出现报错:
> cor(dat$truth.agg, dat$.pred) Error in cor(dat$truth.agg, dat$.pred) : unused argument (dat$.pred)
报错原因
这个错误源于加载了caret包——caret包中的cor()函数参数逻辑和基础R的cor()不同,它仅接受单个数据框作为输入,不支持直接传入两个向量参数,因此会提示"unused argument"。
正确处理方式
有三种可行的解决办法:
方法1:指定使用基础R的
cor函数
明确调用基础包的函数,避免和caret的函数冲突:stats::cor(dat$truth.agg, dat$.pred)方法2:适配
caret的cor函数参数要求
如果要使用caret的cor函数,传入整个数据框即可计算所有列的相关性:cor(dat)或者指定目标列:
cor(dat[, c("truth.agg", ".pred")])方法3:卸载
caret包
若暂时不需要caret包,可卸载它,之后cor()会默认使用基础R版本:detach("package:caret", unload = TRUE)
内容的提问来源于stack exchange,提问作者littleworth
相关产品推荐
相关产品推荐

