r - 将 sapply/vapply 用于 read_html

标签 r rvest

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 的包装器返回 vector , matrixarray .

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

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

docsFor <- lapply(urls, read_html)

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

相关文章:

r - 在我发现并修复了 CRAN 包中的一些错误并且作者没有响应后该怎么办?

html - R rvest html 抓取

ajax - 使用 R 抓取具有 Ajax 表的网站

html - 尝试使用 r 抓取合并的 Html 表

javascript - 在 R 中抓取 javascript 网站

r - 将来自以下 ID 的字符串与当前 ID 中的字符串组合

R 用不同的名称保存多个文件

r - 基于数据集中已有的分类变量创建新变量

javascript - Shiny 应用程序是否有 “Save Page As PDF”?

r - 如何将 XPATH 值定义为 R 中 rvest 中 html_nodes 内的变量