将文件路径粘贴到 R 中文件名字符列表的每个元素的开头

Paste a file path onto the beginning of each element of a character list of file names in R

我有一个文件夹中的文件名字符向量,我需要将其转换为单独的文件路径,以便列表中的每个元素都具有完整的文件路径,然后可以使用 xmlParse 对其进行操作。字符向量是使用以下示例代码创建的:

files <- list.files(path = "C:\Users\Documents\XML")
class(files)
[1] "character"

#output looks like this (there are actually 60+ files - condensed here for example)
> files
 [1] "file1.xml" "file2.xml"
 [3] "file3.xml" "file4.xml"
 [5] "file5.xml" "file6.xml"

我需要以某种方式遍历此向量并为每个文件名添加路径的开头部分,以便稍后可以在循环中访问它们。我尝试了 lapplypaste0sapply paste 的各种组合,但代码中不断出现错误。

这里有几个尝试和错误的例子:

home.path <- ("C:\Users\Documents\XML")
filepaths <- lapply(files, paste0(home.path))
> filepaths <- lapply(files, paste0(home.path))
Error in get(as.character(FUN), mode = "function", envir = envir) : 
  object 'C:\Users\Documents\XML' of mode 'function' was not found

filepaths <- sapply(files, paste0(home.path, var, sep = ""))
> filepaths <- sapply(files, paste0(home.path, var, sep = ""))
Error in paste0(home.path, var, sep = "") : 
  cannot coerce type 'closure' to vector of type 'character'

如果这按我预期的方式工作,它应该return这样:

>filepaths
[1] "C:\Users\Documents\XML\file1.xml"
[2] "C:\Users\Documents\XML\file2.xml"
[3] "C:\Users\Documents\XML\file3.xml"
...

您可以直接在字符向量上直接使用 paste0()(不需要显式循环),如下所示:

filenames <- c("a.txt", "b.txt", "c.txt")
paste0("prefix/", filenames)
#> [1] "prefix/a.txt" "prefix/b.txt" "prefix/c.txt"

R很少对单个数据位进行操作;大多数操作适用于数据向量。

如果您想遍历每个文件(用于编辑或合并):

for (file in files) {
   print(paste0("C:\Users\Documents\XML\", file))
}