Настройка рабочего каталога через функцию

Я новичок в R. Я столкнулся с проблемой установки моего рабочего каталога с помощью функции. Вот что я попробовал:

myfunction<-function(directory)
   {
     setwd(paste(getwd(),("/directory"))

   }

Когда я запускаю myfunction("name"), выдает ошибку: невозможно изменить рабочий каталог.

Заранее спасибо за помощь.

3 ответа

Попробуй это:

myfunction <- function(directory) setwd( file.path(getwd(), directory) )

или понимая, что getwd() по умолчанию, поэтому его не нужно указывать:

myfunction <- function(directory) setwd(directory)

или понимая, что ваша функция на самом деле выполняет ту же функцию, что и setwd это будет работать:

myfunction <- setwd

Я не знаю, но если вам интересно, это может быть полезно:

https://github.com/imanojkumar/MyFunctions1/blob/master/README.md

Или просто используйте приведенный ниже код:

source("https://raw.githubusercontent.com/imanojkumar/MyFunctions1/master/ChangeDirectory.R")

Приведенный выше исходный файл содержит следующие три кода:

1. Попросите пользователя указать путь к каталогу.

directory <-  readline('Enter Path to Directory You want to set as
                        Default (use backslash e.g. "E:/MyDirectory") : ')
2. Функция
myfunction <- function(directory) {
if (!is.null(directory))
   setwd(directory)
}

3. Функция работает в фоновом режиме и устанавливает пользовательский каталог по умолчанию

myfunction(directory)

Проблема, с которой вы сталкиваетесь, использует "/directory". Вы получите результат, если вы просто используете каталог вместо "каталог", как в:

myfunction <- function (directory) {
setwd (каталог)
}

Если вы используете функцию вставки, вывод будет символьной строкой, и в конце она будет интерпретироваться как изменение моего рабочего каталога на "каталог", который не существует, и, следовательно, ошибка. R добавляет свое собственное "", и, следовательно, ваша функция становится setwd(""directory""). Вы можете прочитать больше в справке для path.expand()

Другие вопросы по тегам