[英]Passing list of characters into file.path in R
我想从文件夹路径中获取父目录。
说我有:“C:/Users/YS/2020 projects/APP/pect/PDC/src”
我想得到:“C:/Users/YS/2020 projects/APP/pect/PDC”
#Get current directory
cpath = getwd()
#Remove last folder from path
dir <- strsplit(cpath,"/")
dir <- dir[[1]]
parent_dir <- dir[1:length(dir)-1]
#Return file path
file.path(parent_dir)
这些是我的环境变量:
这是我从代码中得到的输出:
[1] "C:" "Users" "YS" "2020 projects" "APP" "pect" "PDC"
我希望它返回:
[1] "C:/Users/YS/2020 projects/APP/pect/PDC"
为什么我不能将字符列表传递到 file.path() 中?
我对环境变量中的 dir 如何被列为字符而不是列表或向量感到有些困惑
我也有点困惑为什么 strsplit 返回一个包含 1 个值的列表?
如果我们想删除“src”,一个选项是sub
sub("[/][a-z]+$", "", cpath)
如果我们要使用file.path
,用法是
file.path(..., fsep = .Platform$file.sep)
...
表示多个参数一一传递,即
file.path(parent_dir[1], parent_dir[2])
#[1] "C:/Users"
等等
parent_dir
#[1] "C:" "Users" "YS" "2020 projects" "APP" "pect" "PDC"
如果我们想复制它,一个选项是将它放在一个list
并使用file.path
和do.call
do.call(file.path, as.list(parent_dir))
#[1] "C:/Users/YS/2020 projects/APP/pect/PDC"
或使用Reduce
Reduce(file.path, as.list(parent_dir))
#[1] "C:/Users/YS/2020 projects/APP/pect/PDC"
将数组作为输入传递时,它将函数分别应用于每个元素。 可能需要对数组使用paste
。
paste(parent_dir, collapse = "/")
另一种可能更简单的方法:
dirname(getwd())
strsplit
返回一个列表的原因是它可以处理多个输入:
users <- c("c:/users/A", "c:/users/B")
strsplit(users, "/")
[[1]]
[1] "c:" "users" "A"
[[2]]
[1] "c:" "users" "B"
对于环境, dir
是一个有 8 个元素的字符array
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.