我正在尝试impute
在数据集中的列中使用均值来缺失值。
使用Hmisc
包中可用的归因函数
尝试运行几组代码。过去,我曾经在同一数据集上使用过这段代码,但是现在它没有运行。
impute(crime$average.ed,mean)
crime$average.ed<-as.numeric(impute(crime$average.ed, mean))
summary(crime)
变量average.ed
中的缺失值必须替换为均值。
我不断收到错误
match.arg(what)中的错误:“ arg”必须为NULL或字符向量
(顺便说一句平均值为10.51)
答案 0 :(得分:1)
@Rohan 提供的答案是 100% 准确的。但是,我想为遇到同样问题的人做一些补充。
TL;DR:
在您的代码中替换要估算的引用
Hmisc::impute(matrix_to_operate_on, replacement_value)
可以在此文档 https://www.rdocumentation.org/packages/Hmisc/versions/4.4-1/topics/impute 中找到 impute
参数列表。
对于极客:
欺诈/不需要的 impute
函数是在库 e1071
、https://www.rdocumentation.org/packages/e1071/versions/1.7-4/topics/impute 中定义的函数。
如何诊断问题?
在 R 中有一个名为 body()
、https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/body 的内省功能。
这将允许您查看您正在调用的实际函数的来源。
在有问题的情况下,这看起来像:
> body(impute)
{
what <- match.arg(what)
if (what == "median") {
retval <- apply(x, 2, function(z) {
z[is.na(z)] <- median(z, na.rm = TRUE)
z
})
}
else if (what == "mean") {
retval <- apply(x, 2, function(z) {
z[is.na(z)] <- mean(z, na.rm = TRUE)
z
})
}
retval
}
在调查了 impute 函数的主体之后,您可以猜测在哪里
上面的错误来自 Error in match.arg(what) : 'arg' must be NULL or a character vector
现在您知道问题所在了,因此只需通过将正确的库 Hmisc::
加到插补调用中来引用正确的函数即可。
良好做法:
为了避免将来出现这种棘手的情况,请始终在函数来自的库之前加上。您永远不知道是否有其他 R 函数具有“邪恶”双胞胎。
From [package] import [function] in R
答案 1 :(得分:0)
最后我自己找到了解决问题的办法。与软件包Hmisc一起使用时,名为e1071的软件包引起了问题。这两个软件包都具有估算功能,并且当两个软件包都处于活动状态时提供使用时,它将不会运行。因此故事的寓意可以使用其中任何一个。