Можно ли определить кроссплатформенный рабочий каталог для R?
Я преподаю R уроки лично с большим количеством начинающих студентов R. Я также пытаюсь отформатировать свои заметки на RPub, чтобы их могли легко использовать другие люди. Ничто не портит вещи быстрее, чем люди, неправильно определяющие рабочие каталоги или сохраняющие файлы электронных таблиц в другом месте, чем их рабочий каталог.
Можно ли определить рабочий каталог, универсальный для разных платформ? Например, строка кода или функция типа
setwd( someplace that is likely to exist on every computer)
Это может включать функцию, которая находит место, которое обычно существует на всех компьютерах, например, рабочий стол, папка загрузок или каталог R.
2 ответа
В общем, вам лучше всего пойти в домашнюю зону пользователя,
setwd("~")
path.expand("~")
Поскольку вы обучаете новичков, общая проблема заключается в том, что студенты замечают каталог пакетов R ~/R/
и предположим, что они должны поместить свои скрипты в этот каталог; тем самым создавая странные ошибки. Чтобы избежать этого, я бы пошел на
dir.create("~/RCourse", FALSE)
setwd("~/RCourse")
Если вы используете RStudio, вы можете получить их для создания проекта RStudio.
В прошлом я сталкивался с ситуациями, когда это не работает. Например, некоторые люди имеют домашнюю область в качестве сетевого диска, но не могут подключиться к Интернету или получить доступ через брандмауэр.
Вы спрашивали о
место, которое может существовать на каждом компьютере
и да, R усердно работает, чтобы гарантировать, что это возвращает действительный каталог: tempdir()
,
Основная опасность, однако, может заключаться в том, что этот каталог исчезнет после сеанса (если вы не переопределите поведение по умолчанию удаления временного каталога для сеанса в конце). До тех пор, это работает.
Тем не менее, это может быть полезно. Я иногда использую это для записи временных файлов, которые я не хочу загромождать в текущем каталоге, или ~
,
В противном случае @csgillespie дал вам хороший ответ, касающийся $HOME
ака ~
,