【问题标题】:Error message not understood错误信息不理解
【发布时间】:2016-08-11 17:46:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请在问题中包含您正在使用的软件包的名称。 NaiveBayes 不是基础 R 的一部分。我的猜测是您正在提供 density 的输出,这是参数“prior”的列表,它需要一些其他对象类型。如果是这种情况,您将需要提取所需的density 的组件。
  • 查看?density的输出。这是一个列表。您正在寻找密度本身。您可以通过class(density(G2M1$data, bw="nrd0", ....))查看。
  • 我不确定我是否理解。

标签: r syntax syntax-error


【解决方案1】:

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

示例

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

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

重新创建错误

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

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)

成功。以后记得给大家树立榜样。并使用这些基本的故障排除技术。祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2023-03-21
    • 2020-02-12
    • 2016-06-18
    • 2021-12-27
    • 2015-06-06
    • 2015-02-03
    相关资源
    最近更新 更多