Prueba de Kruskal-Wallis: ¿crear la función lapply para subconjugar data.frame?

Tengo un conjunto de valores de datos val) agrupados por varias categorías distance & phase). Me gustaría probar cada categoría porKruskal-Wallis test, dóndeval es variable dependiente,distance es un factor yphase dividir mis datos en 3 grupos.

Como tal, necesito especificar el subconjunto de datos dentro de la prueba de Kruskal-Wallis y luego aplicar la prueba a cada uno de los grupos. PERO,No puedo hacer que mi subconjunto funcione!

n la ayuda de R, se especifica que lasubset esan optional vector specifying a subset of observations to be used. Pero cómo poner esto correctamente a milapply función?

Mis datos ficticios:

# create data
val<-runif(60, min = 0, max = 100)
distance<-floor(runif(60, min=1, max=3))
phase<-rep(c("a", "b", "c"), 20)

df<-data.frame(val, distance, phase)

# get unique groups
ii<-unique(df$phase)

# get basic statistics per group
aggregate(val ~ distance + phase, df, mean)

# run Kruskal test, specify the subset
kruskal.test(df$val ~df$distance,
             subset = phase == "c")

Esto funciona bien, por lo que mi subconjunto debe establecerse correctamente como un vector. Pero cómo usar esto en unalapply función?

# DOES not work!!
lapply(ii, kruskal.test(df$val ~ df$distance,
                        subset = df$phase == as.character(ii))) 

Mi objetivo general es crear una función desdekruskal.test, y guarde todas las estadísticas para cada grupo en una tabla.

Toda la ayuda es muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta