2013-06-26 30 views
17

Làm cách nào để lấy đường dẫn đến thư mục mẹ trong R? Tôi phải viết một tập lệnh R có đầu vào từ một thư mục trong thư mục mẹ và xuất dữ liệu vào một thư mục khác trong thư mục mẹ. Vì vậy, nếu tôi có thể tìm đường dẫn đến thư mục cha, thì tôi có thể làm điều này.Thư mục mẹ trong R

Trả lời

17

Tôi giả sử bạn có nghĩa là thư mục mẹ của thư mục làm việc của R?

Giải pháp đơn giản nhất có thể là như sau.

wd <- getwd() 
setwd("..") 
parent <- getwd() 
setwd(wd) 

Điều này lưu thư mục làm việc, đổi thành thư mục gốc, lấy kết quả là parent và đặt lại lại thư mục làm việc. Điều này tiết kiệm có để đối phó với các vagaries của thư mục gốc, thư mục nhà, và các tính năng cụ thể hệ điều hành khác, mà có lẽ sẽ yêu cầu một loạt các fiddling với regexes.

+2

+1 cho "..". Tôi luôn luôn sử dụng nó trong thiết bị đầu cuối với cd, nhưng tôi không bao giờ cần thiết vào 'R', tốt để làm. Cảm ơn – Michele

4

Có thể hai lời khuyên này có thể giúp

"~/" # after the forward slash you "are" in your home folder 

sau đó trên cửa sổ

"C:/" # you are in your main hard drive 
"G:/" # you are just in another hard drive :-) 

trên unix bạn có thể làm điều gì đó tương tự với

"/etc/" 

sau đó bạn có thể đi xuống vào bất kỳ phụ thư mục bạn cần

Hoặc như @Hong Ooi gợi ý bạn có thể đi lên đến dir mẹ của thư mục làm việc của bạn với

"../" 

NB: ngay sau khi trận chung kết về phía trước dấu gạch chéo bấm tab và bạn sẽ có tất cả các tập tin và thư mục, rất tiện dụng, đặc biệt là trong RStudio

+0

@ user2449961 nếu bạn có nghĩa là cha mẹ của thư mục làm việc (bạn nên chính xác hơn) "../" ** là ** đường dẫn bạn cần. xin lỗi, hãy thử. gõ theo nghĩa đen '" ../ "' và sau khi tab '/' nhấn và bạn sẽ thấy tất cả tệp bên trong thư mục mẹ – Michele

+1

@ user2449961 nếu bạn xóa nhận xét thì những người khác sẽ không có ý nghĩa đối với người xem mới của câu hỏi – Michele

21

bạn có thể sử dụng dirname trên getwd để trích xuất tất cả mọi thứ nhưng mức độ nhất trên cùng của thư mục hiện tại của bạn:

dirname(getwd()) 
[1] "C:/Documents and Settings" 
+0

Đây là giải pháp chung chung hơn – Nick

0

possibil Một ity:

parts = unlist(strsplit(getwd(), .Platform$file.sep)) 
do.call(file.path, as.list(parts[1:length(parts) - 1])) 

Việc này sẽ chia nhỏ tập tin thành thư mục, thả thư mục cuối cùng và sau đó kết hợp lại các phần vào tập tin.

9

Trên thực tế dirname cho phép quay trở lại một số thư mục mẹ

Path="FolderA/FolderB/FolderC/FolderD" 

dirname(Path) 

"FolderA/FolderB/FolderC"

dirname(dirname(Path)) 

"FolderA/FolderB"

Và vân vân. ..

+0

Đây chính xác là những gì tôi cần cho một dự án mà tôi đang làm bây giờ, cảm ơn! –

Các vấn đề liên quan