2

我是一个相对新手的 r 用户,正在尝试使用 klaR 包中的 partimat() 函数来绘制决策边界以进行线性判别分析,但我一直遇到同样的错误。我已经尝试根据手册以多种不同的方式输入参数,但不断收到以下错误:

partimat.default(x, grouping, ...) 中的错误:至少需要两个类

这是我给出的输入示例:

partimat(sources1[,c(3:19)],grouping=sources1[,2],method="lda",prec=100)

其中我的数据表以名称“sources1”加载,第 3 到 19 列包含解释变量,第 2 列包含类。我也试过通过输入公式来做到这一点:

partimat(sources1$group~sources1$tio2+sources1$v+sources1$cr+sources1$co+sources1$ni+sources1$rb+sources1$sr+sources1$y+sources1$zr+sources1$nb+sources1$la+ sources1$gd+sources1$yb+sources1$hf+sources1$ta+sources1$th+sources1$u,data=sources1)

这些是列标题。

我已经成功地在同一个数据集上运行了 LDA,没有问题,所以我不太确定出了什么问题。

4

1 回答 1

4

从 partimat.default 函数的源代码中可以getAnywhere(partimat.default)看出

if (nlevels(grouping) < 2) 
    stop("at least two classes required")

因此,您可能尚未将分组列定义为因子变量。如果你尝试summary(sources1[,2])你会得到什么?如果这不是一个因素,请尝试

sources1[,2] <- as.factor(sources1[,2])

"sources1$"或者在方法 2中,当您指定要在参数中查找这些变量名称的数据框时,尝试在公式中删除每个变量名称上的data。我认为您有效地指定了数据框两次,例如,它可能正在寻找

"sources1$sources1$groups"

而不是

"sources1$groups"

如果没有进一步的错误消息或可重现的示例(即在您的帖子中包含一些数据),真的很难说。

高温高压

于 2012-06-27T17:07:56.530 回答