[英]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.