是否可以为R定义跨平台工作目录?

是否可以为R定义跨平台工作目录?,r,setwd,R,Setwd,我亲自教授R教程,有大量的本科生R新手。我还尝试在RPUB上格式化我的笔记,以便其他人可以轻松地使用它们。没有什么比人们错误地指定工作目录或将电子表格文件保存到与其工作目录不同的地方更能让事情偏离轨道的了 是否可以定义跨平台通用的工作目录?例如,一行代码或类似 setwd( someplace that is likely to exist on every computer) 这可能涉及到一个功能,它可以找到所有计算机上通常存在的某个位置,例如桌面、下载文件夹或R目录。一般来说,最好的办法是

我亲自教授R教程,有大量的本科生R新手。我还尝试在RPUB上格式化我的笔记,以便其他人可以轻松地使用它们。没有什么比人们错误地指定工作目录或将电子表格文件保存到与其工作目录不同的地方更能让事情偏离轨道的了

是否可以定义跨平台通用的工作目录?例如,一行代码或类似

setwd( someplace that is likely to exist on every computer)

这可能涉及到一个功能,它可以找到所有计算机上通常存在的某个位置,例如桌面、下载文件夹或R目录。

一般来说,最好的办法是去用户的家中

setwd("~")
path.expand("~")
由于您是新手,一个常见的问题是,学生会注意到R包目录
~/R/
,并假设他们应该将脚本放在该目录中;从而产生了奇怪的bug。为了避免这种情况,我会选择

dir.create("~/RCourse", FALSE)
setwd("~/RCourse")
如果您使用RStudio,您可以让他们创建一个RStudio项目

在过去,我遇到过这样做不起作用的情况。例如,有些人将他们的家庭区域作为网络驱动器,但无法连接到internet或通过防火墙。

您询问过

可能存在于每台计算机上的某个地方

是的,R努力确保返回一个有效的目录:
tempdir()

不过,主要的危险可能是该目录将在会话结束后消失(除非您覆盖在结束时删除每个会话临时目录的默认行为)。在那之前,它是有效的

尽管如此,这还是有用的。我想写临时文件,我不想在当前目录中乱放,或者
~


否则@csgillespie就
$HOME
aka
~

将目录设置为相对路径而不是绝对路径是使代码可移植的更普遍接受的方法。类似于
setwd(“./working”)
的东西可能会出现。
path.expand(“~”
将在Windows以及类似Unix的平台上为您提供用户的主目录。