要求在 R Studio 中设置工作目录 - 多个用户使用同一个 R 脚本
Posted
技术标签:
【中文标题】要求在 R Studio 中设置工作目录 - 多个用户使用同一个 R 脚本【英文标题】:Ask to set the working directory in R Studio - multiple users working with the same R script 【发布时间】:2018-12-09 21:32:32 【问题描述】:我们三个人使用相同的 R 脚本在 R Studio 中开展我们的研究项目。这会通过设置工作目录带来一些问题,因为文件和数据表都保存在本地每个人的 Dropbox 文件夹中。因此,我们使用相同的脚本和相同的数据,但在我的情况下,工作目录的路径例如像“C:/Users/thoma/Dropbox/...”。
我可以在代码开头通过 setwd("directory") 设置 wd,但这仅适用于我。
我的问题:是否有命令询问我在哪里设置 wd,每个用户都可以设置自己的工作目录,例如 askforwd()
每个文件夹中的数据都是同步的,因此这是每次不同用户运行代码时都必须更改的唯一路径。
感谢您的帮助!
这是我们的代码示例:
setwd("C:/Users/thoma/Dropbox/") #sets the directory
Datensatz <- read_excel("Datensatz.xlsx") #reads the synced data in the folder
【问题讨论】:
getwd()
获取当前工作目录。
【参考方案1】:
不要让用户设置目录,只需将它们全部构建到脚本中并检查哪个用户正在使用该脚本。
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]
给的是当前登录的用户。
【讨论】:
这非常有用。我认为这也会导致灵魂提神,但是当我运行setwd(Paths[Sys.info()[7]])
时,它会显示missing value is invalid
。所以有些东西不见了,我找不到它是什么。你能解释一下Sys.info()[7]
中的“7”是什么意思吗?谢谢!
好的,现在它可以工作了,我只是把用户叫错了!非常感谢 - 这真是太棒了,它适用于每个用户!
抱歉,我应该警告您检查Sys.info
返回用户名的方式。我机器上的所有大写字母。我很高兴它有所帮助。【参考方案2】:
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"))
【讨论】:
当我使用此代码时,它显示'错误:path
不存在:'C:\Users\thoma\Dropbox/Datensatz.xlsx'' 是否有机会更改子文件夹? 'C:/Users/thoma/Dropbox/FOM/Empirisches Projekt/Gruppenarbeit/'
在您的 OP 中,您使用该路径作为示例。这不正确吗?
'C:/Users/thoma/Dropbox/FOM/Empirisches Projekt/Gruppenarbeit/' 是我需要找到 Datensatz.xlsx 的路径。那么我可以以任何方式设置此路径吗?
是read_excel(file.path(Path2Dropbox, "FOM/Empirisches Projekt/Datensatz.xlsx"))
再次感谢。这也是一种自动设置目录的好方法,但对于多个用户来说不是很有用,因为最后你必须设置一个专门使用的路径。以上是关于要求在 R Studio 中设置工作目录 - 多个用户使用同一个 R 脚本的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio 的 build.gradle 中设置的 Android R/11 的 API 级别是啥?
Android Studio中设置一个按钮的不同点击触发事件