在函数调用中使用 unlist
Posted
技术标签:
【中文标题】在函数调用中使用 unlist【英文标题】:Using unlist inside a function call 【发布时间】:2022-01-16 19:59:12 【问题描述】:我正在尝试基于跨多个 URL 的网络抓取创建数据集。
对于这个例子,我试图抓取名为h2.title
的节点,它是li.portal_list_item
的子节点。即,我希望创建 one 向量,其中包含节点的所有值(每个 URL 上为 500)。
我希望在循环或函数中执行此操作。
URL 的一个子集是,
test_urls <- c("https://projekter.aau.dk/projekter/da/studentthesis/search.html?showAdvanced=true&advanced=true&pageSize=500&page=1",
"https://projekter.aau.dk/projekter/da/studentthesis/search.html?showAdvanced=true&advanced=true&pageSize=500&page=2")
现在,我可以抓取节点并获得一个列表列表 - 500 个列表中的 2 个。但是,我想将 unlist
这个函数放入一个 1000 个长向量 inside 函数,所以我还可以使用该函数来创建数据集,因为我需要跨多个节点进行抓取 - 如果我可以简单地获得一个向量,我可以将它分配给数据集的一列。
library(rvest)
library(dplyr)
dfList <- lapply(test_urls, function(i)
webpage <- read_html(i)
listitems <- html_nodes(webpage, "li.portal_list_item")
.GlobalEnv$titles <- listitems %>% html_nodes("h2.title") %>% html_text()
)
如果我尝试在我的函数中使用unlist
,它根本不起作用,我凭直觉理解 - 但是,我似乎找不到解决方案。
任何帮助都非常非常感谢!
【问题讨论】:
【参考方案1】:我们可以使用collapse
dfList <- lapply(test_urls, function(i)
webpage <- read_html(i)
listitems <- html_nodes(webpage, "li.portal_list_item")
titles <- listitems %>% html_nodes("h2.title") %>% html_text()
titles = paste(titles,collapse="\n")
return(titles)
)
我们现在有一个包含两个元素的列表。
【讨论】:
以上是关于在函数调用中使用 unlist的主要内容,如果未能解决你的问题,请参考以下文章
R语言unlist函数将复杂数据(list列表dataframe字符串String)对象处理成简单向量vector形式:将包含dataframe和字符串的向量列表转换为单个向量(删除数据名称)