Что такое надежный способ постоянной настройки рабочего каталога R?

Существует много информации о том, как изменить рабочий каталог по умолчанию в R (каждый раз, когда запускается R или RStudio, рабочий каталог возвращается к стандартному, поэтому каждый раз нужно запускать setwd()). В RStudio есть соответствующая опция в Инструменты> Глобальные параметры> Общие. Кажется, что другие решения включают редактирование файла Rprofile.site. Однако все это требует, чтобы пользователь был в состоянии найти Rprofile и отредактировать его, или просмотреть настройки, и при этом не портить.

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

Я уже написал скрипт, который загружает все необходимые пакеты для курса, загружает скрипт в RStudio, скачивает и загружает рабочее пространство с данными и функциями. Они просто должны запустить его один раз после установки R+RStudio. На мгновение я подумал, что это было бы хорошей идеей:

cat("setwd(\"the desired working directory\")", file=file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"), append=T)

... но это выдает Permission Denied, по крайней мере, под Windows (файлы программы защищены, я думаю). Желаемое решение должно быть независимым от платформы (большинство из них имеют Windows, но некоторые могут иметь Mac или Linux). Но самое главное, он должен состоять из простого вставления скрипта в консоль и нажатия Enter, ничего более сложного (отсюда и надежная часть названия).

3 ответа

Решение

Как насчет чего-то вроде

set_default_wd <- function(wd = getwd()) {
  text <- paste0(
    'local({ setwd("', wd, '") })')
  ##
  if (Sys.info()["sysname"] == "Windows") {
    write(
      text,
      file = paste0(Sys.getenv("HOME"), "\\.Rprofile"),
      append = TRUE)
  } else {
    write(
      text,
      file = paste0(Sys.getenv("HOME"), "/.Rprofile"),
      append = TRUE)
  }
}
##
#R> set_default_wd()  #set_default_wd("some/file/path")

Это должно работать на Windows и Unix-подобных системах и избегать проблем с разрешениями. На самом деле единственное требование на стороне пользователя - указать допустимый путь к файлу, который он (надеюсь) сможет найти.


Возможно, стоит иметь возможность перезаписать $HOME/.Rprofile (вместо принудительного добавления строк) в случае указания неправильного пути к файлу и т. д...

set_default_wd <- function(wd = getwd(), overwrite = FALSE) {
  text <- paste0(
    'local({ setwd("', wd, '") })')
  ##
  if (Sys.info()["sysname"] == "Windows") {
    write(
      text,
      file = paste0(Sys.getenv("HOME"), "\\.Rprofile"),
      append = !overwrite)
  } else {
    write(
      text,
      file = paste0(Sys.getenv("HOME"), "/.Rprofile"),
      append = !overwrite)
  }
}

Вы можете создать ярлык RGui.exe на панели инструментов.

Затем щелкните правой кнопкой значок, щелкните правой кнопкой мыши R, Свойства, и на вкладке Ярлык вы можете установить Start in: папка, которую вы хотите.

Например C:/Users/myStudentID/Documents/dev

введите описание изображения здесь

Наиболее надежный вариант может состоять в том, чтобы установить сервер Rstudio, сконфигурировать его со всеми необходимыми пакетами, а затем дать каждому учащемуся учетную запись на сервере. Таким образом, каждый ученик начинает с идентичной настройки и своей собственной директории / папки. Студентам нужен только доступ в Интернет, чтобы использовать его. Затем вы могли бы предоставить инструкции для тех студентов, которые достаточно предприимчивы, чтобы установить R на свой компьютер (и с большей вероятностью смогут следовать инструкциям для его правильной настройки).

Вы также можете попробовать свои cat вариант, но поместите инструкции в.Rprofile в 'HOME' вместо.Rprofile.site в 'R_HOME'.

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

Или вы можете просто оставить их работать в каталоге по умолчанию.

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