我正在嘗試向下移動直接在R中工作的文件夾。例如,我有一個foo/bar的工作目錄,我想移動到foo/bar /子文件夾:向下移動工作目錄中的文件夾
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
然後我得到:在setwd
錯誤( 「〜/子」):不能改變工作目錄
我在做什麼錯?
我正在嘗試向下移動直接在R中工作的文件夾。例如,我有一個foo/bar的工作目錄,我想移動到foo/bar /子文件夾:向下移動工作目錄中的文件夾
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
然後我得到:在setwd
錯誤( 「〜/子」):不能改變工作目錄
我在做什麼錯?
符號~
不會做你認爲它所做的事情。這並不意味着「當前目錄」。 ~
指您的主目錄。
正確的符號使用當前目錄是一段.
所以,你要的是
setwd("./subfolder")
當前的操作系統通常認爲,如果不提供完整路徑,則相對路徑(即相對於當前目錄)將默認使用。因此,也可以簡單地使用
setwd("subfolder")
在路徑中使用的符號的概要
.
=當前目錄..
當前目錄~
=主目錄=父(請參閱主目錄下面的註釋)/
作爲第一個字符=根目錄例如setwd("/folder")
/
在路徑中的目錄之間的路徑=分隔符內。例如。 setwd("/folder/subfolder")
\
=在Windows和DOS操作系統只有,反斜槓\
相當於/
。如果你在R中使用這種格式,你需要使用雙反斜槓\\
來'escape'這個。例如,setwd("C:\\folder\\subfolder")
。 但是,爲了保持平臺之間的兼容性,建議在windows系統上堅持使用正斜槓/
,因爲這將被R轉換爲正確的路徑。上「家」目錄
在Unix的衍生和類Unix操作系統(例如Linux,OSX,BSD)home
目錄的簡稱的含義解釋性說明通過~
是直截了當的。操作系統定義了~
的含義。根據操作系統的不同,通常是/home/<username>
(在Linux和BSD中),/Users/<username>
(在OS X中)或類似的平臺相關變體。有關各種操作系統的定義列表,請參閱here。
但是在Windows中,情況稍有不同,因爲操作系統不會將"~"
識別爲有效路徑。對於Windows FAQ將R說明如何expand.path
解釋主目錄在Windows計算機上正是如此,
主目錄設置如下:如果環境變量R_USER 設置,使用它的值。否則,如果環境變量HOME設置爲 ,則使用其值。在這兩個用戶可控設置之後,R 會嘗試查找系統定義的主目錄。它首先嚐試使用Windows「個人」目錄(通常爲 C:\ Users \ username \ Documents) 。如果失敗,如果兩個環境變量HOMEDRIVE和HOMEPATH都設置爲 (通常是),則 值爲$ {HOMEDRIVE} $ {HOMEPATH}。如果所有這些都失敗,則使用當前的 工作目錄。
根據我的經驗,在Windows上最常見的解釋是"~"
爲"C:\Users\username\Documents"
。你可以找到環境變量的值用下面的命令
Sys.getenv("R_USER")
Sys.getenv("HOME")
Sys.getenv("HOMEDRIVE")
Sys.getenv("HOMEPATH")
而且,您可以通過使用命令
normalizePath("~")
符號找出路
"~"
被解釋爲〜沒有做什麼你似乎認爲它確實如此。這並不意味着「當前目錄」。 〜指您的主目錄。 – dww@dww:這意味着你應該只是做'setwd(「子文件夾」)或者setwd(「./子文件夾」)(單個'.'表示「當前目錄」) –
@dww,發佈爲答案? –