Попросить установить рабочий каталог в R Studio - несколько пользователей работают с одним R-скриптом - PullRequest
0 голосов
/ 01 июля 2018

Мы три человека, использующие один и тот же R-скрипт для работы над нашим исследовательским проектом в R Studio . Это порождает некоторые проблемы, устанавливая рабочий каталог , поскольку файл и таблицы данных сохраняются локально в любой папке Dropbox. Поэтому мы используем тот же сценарий и те же данные, но путь к рабочему каталогу, например, похож на «C: / Users / thoma / Dropbox / ...» в моем случае.

Я могу установить wd с помощью setwd ("directory") в начале нашего кода, но это работает только для меня.

Мой вопрос : есть ли команда, которая спрашивает меня, где установить мой wd, чтобы каждый пользователь мог установить свой собственный рабочий каталог, например askforwd ()

Данные в каждой папке синхронизируются, поэтому это единственный путь, который нужно менять каждый раз, когда другой пользователь запускает код.

Спасибо за помощь!

Вот пример нашего кода:

setwd("C:/Users/thoma/Dropbox/") #sets the directory

Datensatz <- read_excel("Datensatz.xlsx") #reads the synced data in the folder

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Dropbox предоставляет файл json, который можно использовать для установки каталога

library(magrittr)
library(jsonlite)

DropboxInfo <- 
  if (Sys.getenv("OS") == "Windows_NT") {
    file.path(Sys.getenv("LOCALAPPDATA"), "Dropbox", "info.json")
  } else {
    "~/.dropbox/info.json"
  }

Path2Dropbox <- 
  jsonlite::fromJSON(DropboxInfo) %>%
  use_series("business") %>%  # or 'personal' if applicable
  use_series("path")

Datensatz <- read_excel(file.path(Path2Dropbox, "Datensatz.xlsx"))
0 голосов
/ 01 июля 2018

Вместо того, чтобы заставлять пользователя устанавливать каталог, просто встроите их все в сценарий и проверьте, какой пользователь использует сценарий.

Paths = c("C://user/Fred/", "C://user/Wilma", "C://Some/other/path")
names(Paths) = c("Fred", "Wilma", "Guest")
setwd(Paths[Sys.info()[7]])

Конечно, Sys.info()[7] дает пользователю, который в данный момент вошел в систему.

...