Si supponga di avere un elenco (mylist
) che viene utilizzato come oggetto di input per una funzione lapply
. C'è un modo per sapere quale elemento di mylist
è in fase di valutazione? Il metodo dovrebbe funzionare su lapply
e snowfall::sfApply
(e altri possibili applicare i membri della famiglia).quale elemento della lista viene elaborato quando si usa snowfall :: sfLapply?
Su chat, Gavin Simpson ha suggerito il seguente metodo. Funziona alla grande per lapply
ma non così tanto per sfApply
. Vorrei evitare pacchetti extra o giocherellare con la lista. Eventuali suggerimenti?
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]]"
Questa è la versione parallela che non la sta tagliando.
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()
che sembrava "sbagliato" e abbastanza sicuro, quando provo 'attr (mylist [[1]]) <- 1', ottengo:' Errore in 'attr <-' (' * tmp * ', valore = 2): 2 argomenti passati a 'attr <-' che richiede 3'. Penso che sia necessario specificare un nome per l'attributo –
@BondedDust divertente, non ricordo che questo NON funzioni. Ho modificato le due righe offensive. –