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

时间:2016-09-03 16:46:33

标签: r setwd

我正在和大量的本科R新手亲自教授R教程。我也试图在RPub上格式化我的笔记,以便他们可以轻松地被其他人使用。没有什么能比人们错误指定工作目录或将电子表格文件保存到与工作目录不同的地方更快地破坏事物。

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

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

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

2 个答案:

答案 0 :(得分:4)

一般来说,最好的选择是去用户的家庭区域,

setwd("~")
path.expand("~")

由于你正在教新手,一个常见的问题是学生注意到R包目录~/R/,并假设他们应该把他们的脚本放在这个目录中;从而产生奇怪的错误。为了避免这种情况,我会选择

dir.create("~/RCourse", FALSE)
setwd("~/RCourse")

如果你使用RStudio,你可以让他们创建一个RStudio项目。

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

答案 1 :(得分:2)

你问过

  

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

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

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

不过,这可能很有用。我sometimes use that要编写我不想在当前目录中混淆的临时文件,或~

否则@csgillespie会给你一个与$HOME又名~有关的答案。