Betrachten Sie das folgende Beispiel ändern:purrr: unable globale Liste
test <- data_frame(link = c('https://commons.wikimedia.org/wiki/Main_Page', 'https://commons.wikimedia.org/wiki/Category:Society'),
counter = c(1,2))
> test
# A tibble: 2 x 2
link counter
<chr> <dbl>
1 https://commons.wikimedia.org/wiki/Main_Page 1
2 https://commons.wikimedia.org/wiki/Category:Society 2
jetzt ich purrr:map2
verwenden, um eine einfache Funktion sowohl für die link
und die counter
Variable anzuwenden. Die Funktion ist wie folgt:
data_list = list()
get_link <- function(link, counter){
read_tmp <- read_html(link)
data_list[[counter]] <- read_tmp
}
Die Liste leer bleibt. Was ich versuche, ist einfach zu speichern-bei jeder Iteration read_tmp
in eine globale Liste data_list
, auf die ich später im Programm zugreifen möchte.
jedoch Aufruf: purrr:map2(test$link, test$counter, ~get_link(.))
fügt nichts hinzu auf die data_list
Liste.
Was ist das böse Scoping-Problem hier? Ich dachte, dass ich ein globales Objekt ändern, die außerhalb der Funktion definiert wurde ...
Dank! Verfügen Sie über einige Quellen, um Ihre Behauptung zu untermauern, dass "das Scoping bei der Implementierung ein wenig geändert wurde, soweit mir bekannt ist"? –