Supongamos que tenemos una lista (mylist
) que se utiliza como objeto de entrada para una función lapply
. ¿Hay alguna manera de saber qué elemento en mylist
se está evaluando? El método debería funcionar en lapply
y snowfall::sfApply
(y otros posibles miembros de la familia también).qué elemento de lista se está procesando cuando se utiliza nevadas :: sfLapply?
En chat, Gavin Simpson sugirió el siguiente método. Esto funciona muy bien para lapply
pero no tanto para sfApply
. Me gustaría evitar paquetes adicionales o jugar con la lista. ¿Alguna sugerencia?
mylist <- list(a = 1:10, b = 1:10)
foo <- function(x) {
deparse(substitute(x))
}
bar <- lapply(mylist, FUN = foo)
> bar
$a
[1] "X[[1L]]"
$b
[1] "X[[2L]]"
Esta es la versión paralela que no lo está cortando.
library(snowfall)
sfInit(parallel = TRUE, cpus = 2, type = "SOCK") # I use 2 cores
sfExport("foo", "mylist")
bar.para <- sfLapply(x = mylist, fun = foo)
> bar.para
$a
[1] "X[[1L]]"
$b
[1] "X[[1L]]"
sfStop()
que parecía "mal" y, efectivamente, cuando intento 'attr (milista [[1]]) <- 1', me sale:' Error en 'attr <-' (' * tmp * ', value = 2): 2 argumentos pasados a 'attr <-' que requiere 3'. Creo que debe especificar un nombre para el atributo –
@BondedDust gracioso, no recuerdo que este no funcione. Edité las dos líneas ofensivas. –