Załóżmy, że mamy listę (mylist
), która jest używana jako obiekt wejściowy dla funkcji lapply
. Czy istnieje sposób na sprawdzenie, który element w mylist
jest oceniany? Metoda powinna działać na lapply
i snowfall::sfApply
(i możliwe, że inni członkowie rodziny również).który element listy jest przetwarzany podczas używania opadów śniegu :: sfLapply?
Na chat Gavin Simpson zasugerował następującą metodę. Działa to świetnie dla lapply
, ale nie tak bardzo dla sfApply
. Chciałbym uniknąć dodatkowych paczek lub błądzenia się z listą. Jakieś sugestie?
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]]"
To jest wersja równoległa, która go nie tnie.
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()
To wyglądało "źle" i na pewno wystarczy, gdy próbuję w ciekawy (MyList '[[1]]) <- 1 ', dostaję:' Błąd w 'attr <-' (' * tmp * ', value = 2): 2 argumenty przekazane do 'attr <-', które wymaga 3'. Myślę, że musisz podać nazwę dla atrybutu –
@BondedDust zabawny, nie pamiętam tego NIE działa. Edytowałem dwa obraźliwe wiersze. –