5 votos

¿Cómo repetir eficientemente una función en un conjunto de datos en R?

Digamos que tengo una función funToRepeat:

funToRepeat <- function(df){
    rows <- nrow(df)
    cols <- ncol(df)
    err <- runif( rows * cols )
    dfNew <- df + as.data.frame( matrix(err, nrow=rows, ncol=cols) )
    dfNew
}

Quiero operar funToRepeat a dfTest (un juguete conjunto de datos), múltiples veces, decir n.

dfTest <-
  structure(list(V1 = 1:2, V2 = 3:4), .Names = c("V1", "V2"), 
  row.names = c(NA,-2L), class = "data.frame")                                  

¿Cómo puedo hacer esto y media de la n salidas de funToRepeat en R, de manera eficiente?

Un ejemplo muy malo con n=10 puede ser:

dfAvg <- as.data.frame(list(V1=c(0, 0), V2=c(0, 0)))
for(i in 1:10){
    dfAvg <- dfAvg + funToRepeat(dfTest)
}
dfAvg <- dfAvg/10

Note por favor, que no estoy tratando de bootstrap. Quiero operar funToRepeat en mi conjunto de datos y tomar el promedio de la n salidas. Yo quiero hacer esto como estoy agregando err, un azar de plazo, a mis datos.marco y desea proporcionar una razonable respuesta. (Yo no estoy haciendo exactamente esto en la vida real, pero algo muy similar)

7voto

Marc-Andre R. Puntos 789

Yo se todo lo que la lista y luego usar `` .

Luego convertir a data.frame que necesita después de división de longitud de la lista para obtener la media.

Tenga en cuenta que su función no es necesario toda una `` para operar, sólo sus dimensiones. La conversión a data.frame es innecesario coste aquí, así que es mejor no usarlo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X