purrr:无法修改全局列表
考虑以下示例:purrr:无法修改全局列表,r,purrr,R,Purrr,考虑以下示例: 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
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
列表仍然为空。我试图做的只是在每次迭代时将read\u tmp存储到一个全局列表data\u list
,我希望稍后在程序中访问该列表
然而,呼吁:
purrr:map2(测试$link、测试$counter、~get\u link())
不会向数据列表添加任何内容
什么是令人讨厌的范围界定问题?我以为我在修改一个在函数外部定义的全局对象…请记住,purrr::map*
总是返回一个列表(除了purrr::map.*
变体),但据我所知,在实现中范围有点改变
另外,我不确定您试图用代码实现什么,但我已更改了get_link
函数,以接收数据列表并返回修改(附加)版本的if,并使代码正常工作
以下代码:
library(rvest)
test <- data_frame(link = c('https://commons.wikimedia.org/wiki/Main_Page',
'https://commons.wikimedia.org/wiki/Category:Society'),
counter = c(1,2))
get_link <- function(link, counter, data_list){
read_tmp <- read_html(link)
data_list[[counter]] <- read_tmp
data_list
}
data_list <- list()
purrr::map2(test$link, test$counter, ~get_link(.x, .y, data_list))
库(rvest)
考试谢谢!您是否有一些来源来支持您的声明,即,但据我所知,在实现中范围有所改变。
?
library(rvest)
test <- data_frame(link = c('https://commons.wikimedia.org/wiki/Main_Page',
'https://commons.wikimedia.org/wiki/Category:Society'),
counter = c(1,2))
get_link <- function(link, counter, data_list){
read_tmp <- read_html(link)
data_list[[counter]] <- read_tmp
data_list
}
data_list <- list()
purrr::map2(test$link, test$counter, ~get_link(.x, .y, data_list))
[[1]]
[[1]][[1]]
{xml_document}
<html class="client-nojs" lang="en" dir="ltr">
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n<me ...
[2] <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Ma ...
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
{xml_document}
<html class="client-nojs" lang="en" dir="ltr">
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n<me ...
[2] <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-14 ns-subject page-C ...