在RStudio中通过Rprofile.site加载dplyr

3

自从我发现它,我就一直在虔诚地使用dplyr。因为我使用得如此频繁,我尝试将library(dplyr)放入我的Rprofile的.First()函数中。

这样会加载dplyr,但当我启动Rstudio时,一些dplyr的函数被掩盖了。例如,当我尝试执行以下操作时:

foo <- mtcars %>% filter( cyl == 4 )

我遇到了如下错误:

Error in filter(mtcars, cyl == 4) : object 'cyl' not found

一些故障排除揭示出,如果我在控制台再次运行library(dplyr),问题就会迎刃而解——显然,dplyr的某个/某些函数被一些更深入搜索路径的东西所掩盖(或者更高,这取决于你怎么看它)。
当我查看我的搜索()路径时,我发现有许多其他包在dplyr之后加载,这并不是我想要的(我希望dplyr是最后一个被加载的东西,或者至少几乎是最后一个)。
[1] ".GlobalEnv"        "tools:rstudio"     "package:stats"     "package:graphics"  "package:grDevices" "package:utils"    
[7] "package:datasets"  "package:xlsx"      "package:xlsxjars"  "package:rJava"     "package:dplyr"     "package:methods"  
[13] "Autoloads"         "package:base" 

我正在使用Windows 7操作系统,使用的是RStudio v.0.98.1028版本。由于我不太清楚Windows + RStudio如何处理主目录,因此我正在编辑C:/Program Files/R/R-3.1.1/etc/中的Rprofile文件。有什么建议吗?


如果您不将其放入“.First”函数中会发生什么?也就是说,如果您只是将其裸露地放入“.Rprofile.site”文件中呢? - Richie Cotton
很不幸,我仍然得到相同的错误,并且search()顺序仍然是一样的。 - crazybilly
就我个人而言,我认为将包放在.Rprofile文件中是一个不好的主意,因为它会使得代码难以复现。 - hadley
长期跟进这个问题,我遵循@hadley的建议,创建了一个Rstudio片段,写入几行代码以加载我经常使用的所有库。现在,我只需键入“prep”,然后按Tab键几次,再按ctrl + shift + s,就可以加载所有库,而且当我稍后返回脚本时,一切都能正确加载。 - crazybilly
1个回答

4
在R的启动顺序中(参见?Startup),在加载其他软件包之前,将首先调用.First()函数,其后再调用.First.sys()函数。覆盖filter的是stats软件包。
为了确定要加载哪些软件包,.First.sys()使用options("defaultPackages")。因此,建议您在.First()函数中编辑该选项,具体方法如下:
options(defaultPackages=c(getOption("defaultPackages"),"dplyr"))

1
啊,成功了!我需要改变的唯一一件事是 options('defaultPackages') 是一个列表——你之前添加了 dplyr 作为新的列表项。为了将 dplyr 加入到向量本身中,我必须使用: options(defaultPackages=c(options("defaultPackages")[[1]],"dplyr"))谢谢! - crazybilly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接