Cuando miro la fuente de R Paquetes, veo la función barrido utilizada con bastante frecuencia. A veces se utiliza cuando una función más simple hubiera bastado (por ejemplo, 'aplicar'), otras veces, es imposible saber exactamente lo que está haciendo sin pasando una buena cantidad de tiempo para pasar por el bloque de código.Cómo utilizar la función R 'Barrido'
el hecho de que puedo reproducir el efecto de barrido usando una función más simple sugiere que no entiendo los casos de uso del núcleo de barrido, y el hecho de que esta función se usa con tanta frecuencia sugiere que es bastante útil.
El contexto:
barrido es una función en la biblioteca estándar de R; es firma del método es:
sweep(x, MARGIN, STATS, FUN="-", check.margin=T, ...)
# x is the data
# STATS refers to the summary statistics which you wish to 'sweep out'
# FUN is the function used to carry out the sweep, "-" is the default
Como se puede ver, la firma del método es similar a 'aplicar' a pesar de 'barrido' requiere un parámetro más, de alta ''.
Otra diferencia clave es que 'barrido' devuelve una matriz de la misma forma como la matriz de entrada, mientras que el resultado devuelto por 'aplicar' depende de la función se ha pasado.
Sweep en acción :
# e.g., use 'sweep' to express a given matrix in terms of distance from
# the respective column mean
# create some data:
M = matrix(1:12, ncol=3)
# calculate column-wise mean for M
dx = colMeans(M)
# now 'sweep' that summary statistic from M
sweep(M, 2, dx, FUN="-")
[,1] [,2] [,3]
[1,] -1.5 -1.5 -1.5
[2,] -0.5 -0.5 -0.5
[3,] 0.5 0.5 0.5
[4,] 1.5 1.5 1.5
Así pues, en suma, lo que estoy buscando es un caso de uso ejemplar o dos para barrer .
No recite ni vincule a la documentación de R, a las listas de correo ni a ninguna de las fuentes "principales" de R, suponiendo que las he leído. Lo que me interesa es cómo los programadores/analistas R experimentados usan barrido en su propio código.
M-DX no se replica su resultado. Ha respondido a su propia pregunta. – John
El único uso de 'aplicar' que puedo deducir para este resultado es algo como' t (aplicar (t (M), 2, "-", dx)) ', pero eso es bastante desagradable. –