在 for 循环结束时出现未知错误 - 如何修复?

时间:2021-01-25 17:15:32

标签: r for-loop r-markdown markdown

我正在运行这个 for 循环:

for (i in 1:length(file_list)){

  doc <- read_xml(file_list[i])

  xml_ns(doc)

  ns <- xml_find_all(doc, xpath_person, xml_ns(doc))

  items<-xml_find_all(doc, "//d1:REPORT/d1:People/d1:ACRSPERSON")

  nodenames<-xml_name(xml_children(items))

  contents<-trimws(xml_text(xml_children(items)))

  if (length(items) >0) {

    itemindex<-rep(1:length(items), times=sapply(items, function(x) {length(xml_children(x))}))

    person1<-data.frame(itemindex, nodenames, contents)

    #Convert from long to wide format

    person<- pivot_wider(person1, id_cols= itemindex, names_from = nodenames,

                         values_from = contents)  # %>% unnest(cols = c(A, B, C, D))

    out_person <- rbind.fill(out_person,person )


}

 

但是,当我一次运行所有代码时(在降价中 - 感觉它在常规 rscript 中工作) - 我收到以下错误。

**Error in read_xml.character(file_list[i]) : Document is empty [4]**

我尝试添加一些休息时间,但没有奏效。

for (i in 1:length(file_list)){

  doc <- read_xml(file_list[i])

  xml_ns(doc)

  ns <- xml_find_all(doc, xpath_person, xml_ns(doc))

  items<-xml_find_all(doc, "//d1:REPORT/d1:People/d1:ACRSPERSON")

  nodenames<-xml_name(xml_children(items))

  contents<-trimws(xml_text(xml_children(items)))

  if (length(items) >0) {

    itemindex<-rep(1:length(items), times=sapply(items, function(x) {length(xml_children(x))}))

    person1<-data.frame(itemindex, nodenames, contents)

    #Convert from long to wide format

    person<- pivot_wider(person1, id_cols= itemindex, names_from = nodenames,

                         values_from = contents)  # %>% unnest(cols = c(A, B, C, D))

    out_person <- rbind.fill(out_person,person )
 if (is.null(file_list[i])){

      break
      }

    }

}

我该如何解决这个问题,以便 for 循环正确运行。当 file_list 中没有更多项目时,for 循环成功关闭。还是有其他原因导致了问题?

谢谢。

0 个答案:

没有答案