r语言 - 防止文件路径中出现重复斜杠



我想建立一个文件的路径,给定一个文件名和一个文件所在的文件夹。文件夹可能包含尾部斜杠,也可能不包含。在python中,os.path.join为你解决了这个问题。 这个问题有基本的R解决方案吗?如果没有,R 中推荐的构建没有重复斜杠的文件路径的方法是什么?

这工作正常:

> file.path("/path/to/folder", "file.txt")
[1] "/path/to/folder/file.txt"

但是,如果用户提供了一个带有尾部斜杠的文件夹,file.path仍然有效但令人讨厌的双斜杠:

> file.path("/path/to/folder/", "file.txt")
[1] "/path/to/folder//file.txt"

我正在寻找针对此常见问题的内置 1 个函数答案。

可能与操作系统无关,而不是显式编码/

joinpath = function(...) {
sep = .Platform$file.sep
result = gsub(paste0(sep,"{2,}"), sep, file.path(...), fixed=FALSE, perl=TRUE)
result = gsub(paste0(sep,"$"), '', result, fixed=FALSE, perl=TRUE)
return(result)
}

如果太烦人,您可以使用gsub//替换为/。您可以将其放在自定义函数中以方便

file.path2 = function(..., fsep = .Platform$file.sep){
gsub("//", "/", file.path(..., fsep = fsep))
}
file.path2("/path/to/folder", "file.txt")
#[1] "/path/to/folder/file.txt"
file.path2("/path/to/folder/", "file.txt")
#[1] "/path/to/folder/file.txt"

最新更新