2015-05-14 42 views
1

我正在做一些迴歸分析,並且我遇到了MASS庫中的lda函數的一些奇怪行爲。具體而言,它似乎無法接受字符串,因爲它的參數是formula。這對基地glm功能來說似乎不成問題。我用iris構建了一個小例子來說明這一點。上述爲什麼lda()不接受字符串,因爲它是'公式'參數?

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 

其中,從documentation來看,似乎表明lda並不認爲它已經提供了formula說法。有誰知道這是爲什麼發生,或者如何解決它?

+2

可以使用'as.formula':'LDA(式= as.formula(myForm的),數據=光圈) ' –

+0

輝煌,謝謝。我對R相對比較陌生,不知道有一個本地的「公式」類型。 –

回答

3

可以使用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 
1
myForm<-as.formula(paste("Species","Petal.Length",sep="~")) 
lgrIris<-glm(formula=myForm, data=iris, family="binomial") 
相關問題