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 ...