2012-01-18 21 views
6

quiero aplicar la estadística a las columnas de una trama de datos de una manera iterativa:R iterar sobre columnas trama de datos

columnas número 1: 'A' representa las etiquetas que quiero discriminar:

for (i in names(dataframe)) { 
    i <- as.name(i) 
    group1 <- i[A=="locationX"] 
    group2 <- i[A!="locationX"] 
    p <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

sin embargo, el as.name() es para tratar de eliminar las comillas invertidas de los nombres de columna generados por names(dataframe).

Por desgracia, me da el error:

Error in i[A == "locationX"] : object of type 'symbol' is not subsettable

Creo as.name() no es la forma correcta de hacerlo.

¿Alguna pista?

+1

¿Puede por favor dar un ejemplo 'A', y también quizás' cabeza (dataframe) '(que simplemente nos da una mirada a su marco de datos)? –

Respuesta

8

La única manera de que esto tiene sentido si por "A" a ser un vector con múltiples casos de "locationX" y ejemplo múltiplo de la converse y para la longitud de "A" a ser el mismo que el número de filas en "marco de datos". Si ese es el caso, entonces algo como esto podría funcionar:

p <- list() 
for (i in names(dataframe)) { 
    # using as.names not needed and possibly harmful 
    group1 <- dataframe[[i]][A == "locationX"] 
    group2 <- dataframe[[i]][A != "locationX"] 
    p[i] <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

Tenga en cuenta que incluso si usted no recibió un error con su código que a pesar de ello ha sido el sobreescribiendo "p" cada vez a través del bucle.

Cuestiones relacionadas