1. ホーム
  2. r

[解決済み】数学関数への非数値引数

2022-01-22 09:58:17

質問

データセットからp値を取得したいのですが、どうすればよいですか?今までpnormを使うのに問題はなかったのですが、今回問題が発生しました。

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])

この後、"Error in pnorm(q, mean, sd, lower.tail, log.p) のメッセージが表示されます。 数学関数への非数値引数" と表示されます。

何が問題なのでしょうか?なぜこのようなことが起こるのか理解できません。

教えてください。

解決方法は?

数値ベクトルを要求する関数に、データフレームを渡そうとしています。

> 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 ...

というように、1列だけ渡してみてください。

pnorm(iris[,1])