错误消息不明白

时间:2016-04-19 13:42:01

标签: r syntax syntax-error

我正在尝试计算R中的函数,但是,我得到一个奇怪的错误消息,它没有给我任何关于可能出错的提示......

G2M1 $数据只是一个包含数据的矩阵。

library(klaR)    
out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian"))

错误消息:

Error in sum(prior) : invalid 'type' (list) of argument

我不知道为什么,因为我没有定义任何先前的?

1 个答案:

答案 0 :(得分:0)

在Stack Overflow上提出问题的第一步是创建一个可重现的示例。这是一个小例子,用户可以输入他们的计算机来测试,诊断和解决您的问题。它不仅可以帮助其他人,还可以帮助您正确评估问题,并在创建示例时找到解决方案。

示例

G2M1 <- list(data=as.matrix(iris[-5]), labels=iris[[5]])

这是一个示例数据集,其结构和名称与使用虹膜数据集的问题相同。

重新创建错误

让我们按原样运行你的表达式以查看错误:

library(klaR)
out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian"))
#Error in sum(prior) : invalid 'type' (list) of argument

现在我们在示例中找到了错误。我们来调查它为什么会发生。让我们看一下密度表达式并将其保存到变量中:

den <- density(G2M1$data, bw = "nrd0", adjust = 1,kernel = "gaussian")

class(den)
#[1] "density"
typeof(den)
#[1] "list"

这是一个清单。它不仅具有密度,还具有其他信息,如使用的调用和模型不需要的坐标。密度本身在哪里?我们查看文档:

  

y估计的密度值。

让变量y的子集来查看密度:

head(den$y)
#[1] 0.0003561307 0.0004076448 0.0004647614 0.0005300218 0.0006043244 0.0006864581

这就是该模型所寻求的。我们将den$y替换为模型调用:

out <- NaiveBayes(x = G2M1$data, grouping = G2M1$labels, usekernel = TRUE, den$y)

成功。将来,请记住为每个人创建一个示例。并使用这些基本的故障排除技术祝你好运