首页 > 解决方案 > 从多个 XML 文件创建文本数据框

问题描述

我正在尝试在 R 中创建一个数据框,其中包含来自多个 xml 文件的文本。我试图创建一个读取 xmls 并使用 xml2 包中的 xml_text 的函数。这是我的代码:

read_texts <- function(folder) {
  dir_ls(folder, glob = "*.xml") %>%
  map_dfr(
  read_xml(.) %>%
  xml_text(., trim = TRUE) %>%
  tibble()
)
}

read_texts_n <- Vectorize(read_texts)


read_texts_n("forfatterskab")

当我这样做时,我仍然得到错误:

Error: `x` must be a string of length 1

如何获取加载文件的代码。目的是制作一个包含所有文本的数据框。我没有使用 XML 的经验。

标签: rxmldataframetexttei

解决方案


我认为你不需要Vectorize你的功能,因为你正在使用map_dfr.

尝试使用以下功能。

library(xml2)

read_texts <- function(folder) {
  list.files(folder, pattern = '\\.xml$', full.names = TRUE) %>%
    map_dfr(~.x %>% read_xml() %>% xml_text(trim = TRUE) %>%tibble())
}


result <- read_texts_n("forfatterskab")

我唯一的疑问是您传递文件夹名称的方式。通常,我希望您将完整的文件夹路径传递给该函数。类似的东西read_texts_n('Users/username/folder_name')


推荐阅读