Подтвердить что ты не робот

Родительский каталог в R

Как мне получить путь к родительскому каталогу в R? Я должен написать R script, который принимает входные данные из каталога в родительском каталоге и выводит данные в другой каталог в родительской папке. Итак, если бы я мог найти путь к родительской папке, тогда я мог бы это сделать.

4b9b3361

Ответ 1

Вы можете использовать dirname на getwd, чтобы извлечь все, кроме верхнего уровня вашего текущего каталога:

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

Ответ 2

Я предполагаю, что вы имеете в виду родительский каталог рабочего каталога R?

Самое простое решение, вероятно, состоит в следующем.

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

Это сохраняет рабочий каталог, изменяет его на родителя, получает результат в parent и снова сбрасывает рабочий каталог. Это экономит на том, чтобы иметь дело с капризами корневых каталогов, домашних каталогов и других специфичных для ОС функций, которые, вероятно, потребуют путаницы с регулярными выражениями.

Ответ 3

Фактически dirname позволяет вернуться к нескольким родительским папкам

Path="FolderA/FolderB/FolderC/FolderD"

dirname(Path)

"FolderA/FolderB/FolderC"

dirname(dirname(Path))

"FolderA/FolderB"

И так далее...

Ответ 4

Возможно, эти два совета помогут

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

затем в окнах

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

в unix вы можете сделать что-то подобное с

"/etc/"

тогда вы можете перейти в любой подкаталог, который вам нужен

Или, поскольку @Hong Ooi предлагает вам перейти в родительский каталог вашего рабочего каталога с помощью

"../"

NB: сразу после последней косой черты нажмите tab, и у вас будет весь файл и папка, очень удобная, особенно в RStudio

Ответ 5

Другая возможность:

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

Это разбивает путь к файлу на каталоги, удаляет последний каталог, а затем снова объединяет части в путь к файлу.