は私が集約使用せずに思い付いた一つのアプローチである:ここでは
lapply(split(iris, iris$Species), function(x) mvnorm.etest(x[, -5], 999))
$setosa
Energy test of multivariate normality: estimated parameters
data: x, sample size 50, dimension 4, replicates 999
E-statistic = 1.2034, p-value = 0.03604
$versicolor
Energy test of multivariate normality: estimated parameters
data: x, sample size 50, dimension 4, replicates 999
E-statistic = 1.084, p-value = 0.1502
$virginica
Energy test of multivariate normality: estimated parameters
data: x, sample size 50, dimension 4, replicates 999
E-statistic = 1.0219, p-value = 0.3233
は、私は、データフレームに結果を整理しdplyr
とbroom
パッケージのtidy
機能を使用して出ている別のアプローチです。
library(dplyr)
library(broom)
iris %>%
group_by(Species) %>%
do(tidy(mvnorm.etest(select(., -Species), 999)))
Source: local data frame [3 x 4]
Groups: Species [3]
Species statistic p.value method
<fctr> <dbl> <dbl> <fctr>
1 setosa 1.203397 0.03303303 Energy test of multivariate normality: estimated parameters
2 versicolor 1.083996 0.16916917 Energy test of multivariate normality: estimated parameters
3 virginica 1.021852 0.31431431 Energy test of multivariate normality: estimated parameters
これが役立ちます。集約を使用する必要がある場合は、なぜそれが機能していないか把握することができます。
Thamks!私はdplyrについてではなく、lapplyについて知っていた(使っていた)。しかし、私は行列のような議論のためにそれを働かせる方法をよりよく理解するために集合体を使用したいと思うでしょう。だから、それについての助けも非常に高く評価されます。 – user3236841