将文件路径粘贴到 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"
我需要以某种方式遍历此向量并为每个文件名添加路径的开头部分,以便稍后可以在循环中访问它们。我尝试了 lapply
、paste0
、sapply
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))
}
我有一个文件夹中的文件名字符向量,我需要将其转换为单独的文件路径,以便列表中的每个元素都具有完整的文件路径,然后可以使用 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"
我需要以某种方式遍历此向量并为每个文件名添加路径的开头部分,以便稍后可以在循环中访问它们。我尝试了 lapply
、paste0
、sapply
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))
}