我正在进行一些回归分析,并且在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 <- "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")