Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理R中迭代过程中的错误问题?_R_Loops_Iteration - Fatal编程技术网

如何处理R中迭代过程中的错误问题?

如何处理R中迭代过程中的错误问题?,r,loops,iteration,R,Loops,Iteration,我在处理for循环中的错误时遇到了问题 在下面的代码中,我希望将数据表刮取并集成为一个数据帧 在刮网过程中,一些地址链不起作用,刮网过程中刮刀停止并结束。 (错误位置:doc=read_html(i,编码='UTF-8') 如何继续下一个刮片过程并完成整个向量的迭代,而忽略错误链接 fdata = data.frame() n = 1 for (i in data$address) { doc = read_html(i, encoding = 'UTF-8') dtable = doc

我在处理for循环中的错误时遇到了问题

在下面的代码中,我希望将数据表刮取并集成为一个数据帧

在刮网过程中,一些地址链不起作用,刮网过程中刮刀停止并结束。 (错误位置:doc=read_html(i,编码='UTF-8')

如何继续下一个刮片过程并完成整个向量的迭代,而忽略错误链接

fdata = data.frame()
n = 1
for (i in data$address) {
  doc = read_html(i, encoding = 'UTF-8')
  dtable = doc %>% 
    html_table()
  fdata = bind_rows(fdata, dtable)
  len = length(data$address)
  print(n/len*100)
  n = n + 1
}

只需添加一个
try
并结合
if error next
即可,例如

fdata = data.frame()
n = 1
for (i in data$address) {
  doc = try(read_html(i, encoding = 'UTF-8'), silent = TRUE)
  if (any(class(doc) == 'try-error')) next
  dtable = doc %>% 
    html_table()
  fdata = bind_rows(fdata, dtable)
  len = length(data$address)
  print(n/len*100)
  n = n + 1
}

只需添加一个
try
并结合
if error next
即可,例如

fdata = data.frame()
n = 1
for (i in data$address) {
  doc = try(read_html(i, encoding = 'UTF-8'), silent = TRUE)
  if (any(class(doc) == 'try-error')) next
  dtable = doc %>% 
    html_table()
  fdata = bind_rows(fdata, dtable)
  len = length(data$address)
  print(n/len*100)
  n = n + 1
}

您还可以使用
可能的
from
purr
返回
NA
错误,构建一个函数来刮表,然后使用
map\u dfr

library(purrr)
library(rvest)

read_possible <- posibly(read_html, NA)

scrape_table <- function(address) {

  doc <- read_possible(address, encoding = 'UTF-8')

  if (is.na(doc)) {
    NA
  } else  {
    html_table(doc)
  }

}

map_dfr(data$address, scrape_table)
库(purrr)
图书馆(rvest)

阅读可能的您也可以使用
可能的
purr
返回
NA
关于错误,构建一个函数来刮表,然后使用
map\u dfr

library(purrr)
library(rvest)

read_possible <- posibly(read_html, NA)

scrape_table <- function(address) {

  doc <- read_possible(address, encoding = 'UTF-8')

  if (is.na(doc)) {
    NA
  } else  {
    html_table(doc)
  }

}

map_dfr(data$address, scrape_table)
库(purrr)
图书馆(rvest)
尽可能地阅读