Solo quiero dar un ejemplo para mostrar la ventaja y la limitación en este tema:
I querer "salvar" a una función con su nombre, como una opción que sería utilizado en otra función:
R> foreach(..., .combine=test_fun) {...}
El test_fun
es el nombre de la función, y por supuesto
R> mode(test_fun)
[1] "function"
Cuando Úselo en foreach, solo necesito el nombre de la función, mientras que test_fun
puede ser una función existente (ej. cbind
). Así, test_fun
sean cedidos por
R> test_fun <- get('cbind')
o
R> test_fun <- assign('cbind', get('cbind'))
Así, tienes la función aquí
R> test_fun
function (..., deparse.level = 1)
.Internal(cbind(deparse.level, ...))
realidad, el nombre original no puede ser mantenida, por lo que no tienen forma de convertir test_fun
a la secuencia "cbind"
.
R> deparse(substitute(test_fun))
[1] "test_fun"
que por desgracia tienen que deparse el código foreach por lo que desee el nombre original mostrada en la cadena. Esto significa que la única forma es guardar 'cbind'
como una cadena y crear dicho objeto de función no trae ningún beneficio en este caso.
Hah - Temía obtener esa fortuna. Solo quería poder tener una función a la que pueda llamar como compare.distribution.methods (c (two.choice, go.left, simple.random.sample), y obtener una tabla de resultados para cada método en el vector. Lo bueno de tener es no tener que pasar un vector de etiquetas con los nombres que quiero, pero ciertamente es otra opción. Esperaba algo que lo hiciera por mí. Si esto no es parte de la R fluya, entonces es tanto mejor que se responda esta pregunta. – HamiltonUlmer
El envío del método S3 lo hace por usted! No tema al "OO", este sería un buen ejemplo simple para empezar a usarlo. Si tan solo tuviera algún tipo de y documentos sencillos para señalarle ... Tal vez el libro de Chambers "Software for Data Analysis" del año pasado? –