亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查目錄是否存在,如果不存在則創建

檢查目錄是否存在,如果不存在則創建

函數式編程 2020-02-04 15:17:02
我經常發現自己寫的R腳本會產生大量輸出。我發現將其輸出放入其自己的目錄更加干凈。我在下面編寫的內容將檢查目錄是否存在并移入該目錄,或者創建目錄然后移入該目錄。有沒有更好的方法來解決這個問題?mainDir <- "c:/path/to/main/dir"subDir <- "outputDirectory"if (file.exists(subDir)){    setwd(file.path(mainDir, subDir))} else {    dir.create(file.path(mainDir, subDir))    setwd(file.path(mainDir, subDir))}
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

用途showWarnings = FALSE:


dir.create(file.path(mainDir, subDir), showWarnings = FALSE)

setwd(file.path(mainDir, subDir))

dir.create()如果該目錄已經存在,則不會崩潰,它只會打印出警告。因此,如果您可以看到警告,那么這樣做就沒有問題:


dir.create(file.path(mainDir, subDir))

setwd(file.path(mainDir, subDir))


查看完整回答
反對 回復 2020-02-04
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

自2015年4月16日起,隨著的發布,R 3.2.0有一個名為的新功能dir.exists()。要使用此功能并創建目錄(如果目錄不存在),可以使用:


ifelse(!dir.exists(file.path(mainDir, subDir)), dir.create(file.path(mainDir, subDir)), FALSE)

FALSE如果目錄已經存在或TRUE無法創建,并且目錄不存在但創建成功,則將返回該目錄。


請注意,只需檢查目錄是否存在,即可使用


dir.exists(file.path(mainDir, subDir))


查看完整回答
反對 回復 2020-02-04
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

就一般體系結構而言,我建議在目錄創建方面采用以下結構。這將涵蓋大多數潛在的問題,并且dir.create呼叫將檢測到與目錄創建有關的任何其他問題。


mainDir <- "~"

subDir <- "outputDirectory"


if (file.exists(paste(mainDir, subDir, "/", sep = "/", collapse = "/"))) {

    cat("subDir exists in mainDir and is a directory")

} else if (file.exists(paste(mainDir, subDir, sep = "/", collapse = "/"))) {

    cat("subDir exists in mainDir but is a file")

    # you will probably want to handle this separately

} else {

    cat("subDir does not exist in mainDir - creating")

    dir.create(file.path(mainDir, subDir))

}


if (file.exists(paste(mainDir, subDir, "/", sep = "/", collapse = "/"))) {

    # By this point, the directory either existed or has been successfully created

    setwd(file.path(mainDir, subDir))

} else {

    cat("subDir does not exist")

    # Handle this error as appropriate

}

另請注意,如果~/foo不存在,則dir.create('~/foo/bar')除非您指定,否則對的調用將失敗recursive = TRUE。


查看完整回答
反對 回復 2020-02-04
  • 3 回答
  • 0 關注
  • 882 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號