我有一份本地保存的html文件列表。我想从每个html中提取多个节点并将结果保存在向量中。之后,我想将它们组合在一个数据框中。现在,我有一个代码用于1个节点,它可以工作(见下文),但是如果我将它应用于~20个变量,它似乎很长且效率很低。此外,保存到矢量(XXX_name)真的很奇怪,它从最后一次观察开始,然后继续第一次,第二次,......你有什么建议来简化代码/使其更有效率吗?
# Extracts name variable and stores in a vector
XXX_name <- c()
for (i in 1:216) {
XXX_name <- c(XXX_name, name)
mydata <- read_html(files[i], encoding = "latin-1")
reads_name <- html_nodes(mydata, 'h1')
name <- html_text(reads_name)
#print(i)
#print(name)
}
非常感谢!
答案 0 :(得分:0)
您可以将工作放在一个函数中,然后使用map
首先,创建函数:
read_names <- function(var, node) {
mydata <- read_html(files[var], encoding = "latin-1")
reads_name <- html_nodes(mydata, node)
name <- html_text(reads_name)
}
然后我们创建一个包含所有可能的输入组合的df,并将该函数应用于该
library(tidyverse)
inputs <- crossing(var = 1:216, node = vector_of_nodes)
output <- map2(inputs$var, inputs$node, read_names)