Processing math: 100%

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