r - 从多个 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 的经验。
解决方案
我认为你不需要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')
。
推荐阅读
- javascript - 为什么 ES6 生成器函数在 Angular 6 和 chrome 开发者工具上给我不同的结果
- sas - 导入前在特定列中转置和重命名变量的 SAS 代码
- python - 如果某些数字是从用户输入中附加的,如何在列表中添加数字?
- c# - 从 Microsoft Graph API 获取驱动器的项目:请求格式错误或不正确
- reactjs - 在父组件的每个渲染上为输入设置自动对焦
- java - 从 Java 启动 Outlook 新会议
- google-compute-engine - 在 gcp 计算引擎实例上运行脚本
- amazon-web-services - AWS API Gateway + Cognito + Lambda - $context.authorizer.principalId 为空
- image - 批量缩小 jpeg 图像的最快方法
- sql - 如何在同一个表上执行 SQL JOIN 两次