是否可以为R包设置默认位置而不是让用户选择?

时间:2012-11-30 20:04:32

标签: r

下午好!

我是大学的系统管理员,我负责为计算机实验室设置图像。 R是默认图像的一部分,并且在最长的时间内我们只有一个登录所有实验室用户,允许我们设置一次默认目录,然后在多个系统中对其进行成像。这已经改变了,我们现在让所有用户都登录了个性化登录。这让我遇到了一个与R有关的问题,以及为什么我转向你。

您可能会发现,大多数人都知道,当第一次运行R时,会打开一个对话框,提示输入保存包等的位置。点击“确定”,它就是用户文件,但点击其他任何内容,无论你把它放在哪里。问题是,我们已经相当严格地锁定了系统,并且访问除用户个人目录之外的任何内容都不是我们想要做的事情。

我的问题是 - 有没有办法在第一次运行时强制R通过免提脚本或仅在某处设置,默认为系统上用户的目录以进行包存储?这将阻止我必须授予所有用户访问R目录的读写权限,并且由于他们实际上无法选择更改它而具有更少的搞砸的可能性。如果我必须继续在该文件夹中授予权限,我可以,但我宁愿不这样做。

谢谢!

3 个答案:

答案 0 :(得分:1)

我现在无法测试,但我相信您可以在R etc目录中的Rprofile.site文件中添加Sys.setenv(R_LIBS_USER=path.expand('~\R\library'))之类的内容。

答案 1 :(得分:1)

编辑.Renviron文件以设置默认路径:

# .Renviron file
R_LIBS = '~/.R/library'

答案 2 :(得分:0)

'...默认使用系统上的用户目录进行包存储...'

另一种方式,特别是如果您希望员工/学生的不同设置,则可以使用组策略为登录时的所选计算机/用户设置环境变量。

e.g。相当于......

SETX "R_LIBS" "\\fileserver2/department_shared/public/r/packages"

您可以通过启动R并尝试

轻松检查这是否有效
Sys.getenv("R_LIBS")

此外,此命令可以显示已安装的软件包:

rownames(installed.packages())