在 r 中读取多个 *.rtf 文件
Read multiple *.rtf files in r
我有一个包含 2,000 多个 rtf 文档的文件夹。我想将它们导入 r(最好导入可以与 tidytext 包结合使用的数据框)。此外,我需要一个额外的列,添加文件名,以便我可以 link 每个 rtf 文档的内容到文件名(稍后,我还必须从文件名中提取信息并将其保存到单独的列中我的数据集)。
我遇到了 Jens Leerssen 的解决方案,我试图适应我的要求:
require(textreadr)
read_plus <- function(flnm) {
read_rtf(flnm) %>%
mutate(filename = flnm)
}
tbl_with_sources <-
list.files(path= "./data", pattern = "*.rtf",
full.names = TRUE) %>%
map_df(~read_plus(.))
但是,我收到以下错误消息:
Error in UseMethod("mutate_") :
no applicable method for 'mutate_' applied to an object of class "character"
谁能告诉我为什么会出现此错误或提出其他解决方案来解决我的问题?
我终于解决了这个问题,有一些解决方法。
1) 我在 MacOSX 终端中使用 textutil
命令将 *.rft 文件转换为 *.txt 文件:
find . -name \*.rtf -print0 | xargs -0 textutil -convert txt
通过这样做,我也摆脱了格式化。
2) 然后我使用了 Jens Lerrssen 的 read_plus
函数。但是我现在使用 read.delim
而不是 read_rtf
并包含两个选项(stringsAsFactors
和 quote
)来消除警告 and/or 错误:
read_plus <- function(flnm) {
read.delim(flnm, header = FALSE, stringsAsFactors = FALSE, quote = "") %>%
mutate(filename = flnm)
}
3) 最后,我读入了所有的 *.txt 文件,并在末尾重命名了列 V1
。
df <- list.files(path = "./data", pattern = "*.txt",
full.names = TRUE) %>%
map_df(~read_plus(.)) %>%
rename(paragraph = V1)
我有一个包含 2,000 多个 rtf 文档的文件夹。我想将它们导入 r(最好导入可以与 tidytext 包结合使用的数据框)。此外,我需要一个额外的列,添加文件名,以便我可以 link 每个 rtf 文档的内容到文件名(稍后,我还必须从文件名中提取信息并将其保存到单独的列中我的数据集)。
我遇到了 Jens Leerssen 的解决方案,我试图适应我的要求:
require(textreadr)
read_plus <- function(flnm) {
read_rtf(flnm) %>%
mutate(filename = flnm)
}
tbl_with_sources <-
list.files(path= "./data", pattern = "*.rtf",
full.names = TRUE) %>%
map_df(~read_plus(.))
但是,我收到以下错误消息:
Error in UseMethod("mutate_") : no applicable method for 'mutate_' applied to an object of class "character"
谁能告诉我为什么会出现此错误或提出其他解决方案来解决我的问题?
我终于解决了这个问题,有一些解决方法。
1) 我在 MacOSX 终端中使用 textutil
命令将 *.rft 文件转换为 *.txt 文件:
find . -name \*.rtf -print0 | xargs -0 textutil -convert txt
通过这样做,我也摆脱了格式化。
2) 然后我使用了 Jens Lerrssen 的 read_plus
函数。但是我现在使用 read.delim
而不是 read_rtf
并包含两个选项(stringsAsFactors
和 quote
)来消除警告 and/or 错误:
read_plus <- function(flnm) {
read.delim(flnm, header = FALSE, stringsAsFactors = FALSE, quote = "") %>%
mutate(filename = flnm)
}
3) 最后,我读入了所有的 *.txt 文件,并在末尾重命名了列 V1
。
df <- list.files(path = "./data", pattern = "*.txt",
full.names = TRUE) %>%
map_df(~read_plus(.)) %>%
rename(paragraph = V1)