r语言 - 为什么 lda() 不接受字符串,因为它是'formula'参数?



我正在进行一些回归分析,并且在MASS库中的lda函数中遇到了一些奇怪的行为。具体而言,它似乎无法接受字符串作为formula参数。对于基本glm函数来说,这似乎不是问题。我已经使用iris构建了一个小示例来说明点。

library(MASS)
myForm<-"Species~Petal.Length"
# Disregard the warnings from this line, they're an artifact of the example. It works.
lgrIris<-glm(formula=myForm, data=iris, family="binomial")
# Breaks. 
ldaIris<-lda(formula=myForm, data=iris)

上面的最后一行投掷:

Error in lda.default(formula = myForm, data = iris) : 
argument "x" is missing, with no default

从文档来看,这似乎表明lda并未认为它是formula参数。有人知道为什么会发生这种情况,还是如何解决?

您可以使用 as.formula()

将" myform"变成公式
myForm <- "Species~Petal.Length"
class(myForm)
# [1] "character"
myForm <- as.formula(myForm)
class(myForm)
# [1] "formula"
myForm
# Species ~ Petal.Length
lda(formula=myForm, data=iris)
# Call:
# lda(myForm, data = iris)
# Prior probabilities of groups:
#     setosa versicolor  virginica 
#  0.3333333  0.3333333  0.3333333 
# Group means:
#            Petal.Length
# setosa            1.462
# versicolor        4.260
# virginica         5.552
# Coefficients of linear discriminants:
#                   LD1
# Petal.Length 2.323774
myForm<-as.formula(paste("Species","Petal.Length",sep="~"))
lgrIris<-glm(formula=myForm, data=iris, family="binomial")

相关内容

最新更新