library(rvest)

urls <- c("https://www.r-bloggers.com", "https://www.stackoverflow.com")

docsFor <- list()
for(url in urls){
  docsFor[[url]] <- read_html(url)
}
docsFor[[1]]

问题:我如何对 sapply/vapply 做同样的事情?

使用 sapply(urls, read_html) 将不起作用,因此我选择了 vapply 。如果我是对的,我会需要 externalptr(0) 之类的东西,但我不确定它是否存在。

不起作用,因为没有 externalptr() ?:
docs <- vapply(urls, read_html, FUN.VALUE = list(externalptr(0), externalptr(0)))
docs[[1]]

最佳答案

简而言之,如果你希望你的返回是一个列表,这是你的情况,然后使用 lapply 而不是 sapply ,它是 lapply 的包装器,它返回 vectormatrixarray

反对 vapply 的相同论点,因为它应该被使用,正如评论中适当提到的,仅用于简化对象。

因此,在这种情况下,最好的简洁解决方案是:

docsFor <- lapply(urls, read_html)

关于r - 将 sapply/vapply 用于 read_html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58050470/

10-10 09:44