Niet-numeriek argument voor wiskundige functie

Ik wil PVALUES uit een dataset krijgen. Ik heb geen problemen gehad om pnorm te gebruiken, maar ik heb nu.

data(iris)
iris[,-5]<- scale(as.matrix(iris[,-5]))
# K-Means Cluster Analysis
fit <- kmeans(iris[,-5], 5) # 5 cluster solution
# get cluster means 
aggregate(iris[,-5],by=list(fit$cluster),FUN=mean)
# append cluster assignment
mydata <- data.frame(iris, fit$cluster)
pval<- pnorm(iris[,-5])

Hierna krijg ik een bericht van “Fout in Pnorm (Q, Mean, SD, Lower.tail, Log.p):
Niet-numeriek argument voor wiskundige functie “.

Wat is het probleem? Ik begrijp niet waarom dit gebeurt.

Laat het me weten.


Antwoord 1, Autoriteit 100%

U probeert een dataframe door te geven aan een functie die vraagt ​​om een ​​numerieke vector:

> is.numeric(iris[,-5])
[1] FALSE
> str(iris[,-5])
'data.frame':   150 obs. of  4 variables:
 $ Sepal.Length: num  -0.898 -1.139 -1.381 -1.501 -1.018 ...
 $ Sepal.Width : num  1.0156 -0.1315 0.3273 0.0979 1.245 ...
 $ Petal.Length: num  -1.34 -1.34 -1.39 -1.28 -1.34 ...
 $ Petal.Width : num  -1.31 -1.31 -1.31 -1.31 -1.31 ...

Probeer slechts een enkele kolom te passeren, zoals:

pnorm(iris[,1])

Other episodes