启动 R/RStudio 时不需要加载 R 中的包?
Posted
技术标签:
【中文标题】启动 R/RStudio 时不需要加载 R 中的包?【英文标题】:Make package in R not required to load when I startup R/RStudio? 【发布时间】:2015-07-01 16:34:31 【问题描述】:在询问之前我已经广泛寻找答案,但找不到答案,但如果它在那里,请指点我。每次我启动 R studio 时,我都有自动加载的包,例如:
Loading required package: Rmysql
Loading required package: DBI
Loading required package: cocor
Loading required package: RMySQL
我希望这些包在我每次启动 R Studio 时自动停止加载,并尝试卸载并重新安装 R 和 R Studio,以及以下内容:
detach("package:RMySQL",unload=TRUE)
对于所有这三个包,它都不起作用。请帮忙!谢谢。
sapply(ls(), function(x) class(get(x)))
named list()
【问题讨论】:
【参考方案1】:查看this post,您可能想找到您的.RProfile
文件。查看?Startup
(注意大写S)以获得更多帮助。 .RProfile
应该在您机器上安装 R 的任何位置下的 /etc/
文件夹下。根据上面的帖子,找到其位置的快速方法是运行以下命令:
candidates <- c( Sys.getenv("R_PROFILE"),
file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"),
Sys.getenv("R_PROFILE_USER"),
file.path(getwd(), ".Rprofile") )
Filter(file.exists, candidates)
【讨论】:
你甚至可以添加file.show(Filter(file.exists, candidates))
这很有用;但是,一旦我到了这一点,我仍然不明白如何更改此设置。还有什么建议吗?
您可以在您的问题中发布.Rprofile
的输出吗?
@costebk08 请在文本编辑器中打开该文件并将其内容粘贴到您的问题中
# Things you might want to change # options(papersize="a4") # options(editor="notepad") # options(pager="internal") # set the default help type # options(help_type="text") options(help_type="html") # set a site library # .Library.site <- file.path(chartr("\\", "/", R.home()), "site-library") # set a CRAN mirror # local(r <- getOption("repos") # r["CRAN"] <- "http://my.local.cran" # options(repos=r)) # Give a fortune cookie, but only to interactive sessions # (This would need the fortunes package to be installed.) # if (interactive()) # fortunes::fortune()
【参考方案2】:
从您发布的 cmets 看来,您运行的是 Windows。可以使用以下命令显示用户 .RProfile
的位置:
(my_rprofile <- file.path(Sys.getenv("R_USER"), ".RProfile"))
然后您可以使用以下命令检查该文件是否存在:
file.exists(my_rprofile)
如果返回 TRUE
,请使用以下命令打开它进行编辑:
file.edit(my_rprofile)
如果文件不存在,请尝试:
file.exists(".RProfile")
如果TRUE
:
file.edit(".RProfile")
如果您在 RStudio 中执行此命令,您应该会打开一个包含 .RProfile
的当前内容的窗口。我怀疑它包括以下内容:
library("RMySQL")
然后您需要在保存前酌情删除。
其他需要检查的事项:
Sys.getenv("R_DEFAULT_PACKAGES")
# should be blank
.First
# should give an error that .First not found
如果设置了.First
而您没有.RProfile
文件,则您可能在file.path(Sys.getenv("R_USER"), ".RData")
中定义了它,并且值得重命名该文件(或在RStudio 选项中禁用恢复.RData
。
即使 .First
未定义,我仍然会尝试加载 R/RStudio 而不从 .RData
恢复,因为可能是您正在恢复一些依赖于这些包的 S4 对象。
【讨论】:
当我运行file.exists(my_rprofile)
时,我得到FALSE
;因此,当我运行file.edit(my_rprofile)
时,我只会得到一个空白页。有什么想法吗?
感谢您提供更多信息,但重命名它会完成什么?禁用它会完成什么,我将如何去做?我想我仍然很困惑这会如何影响自动加载哪些包。
当 R 加载时,默认情况下(在基本 R 和 RStudio 中)它会从名为 .RData
的文件中加载工作区。如果其中存在一个名为.First
的函数,那么它就会被调用。如果该函数包含加载包的数据,它们将被加载。很可能是您那里没有.RData
文件,或者如果您这样做了,它就没有定义.First
,但如果是这样,这可能就是解释。
@costebk08 我想知道实际问题是否是您正在从这些包中定义的 .RData 恢复 S4 对象。 cocor
和 DBI
都使用 S4。您可以加载 R 并输入 sapply(ls(), function(x) class(get(x)))
并将输出放在您的 question 中,因为 cmets 并没有真正为这种输出设置吗?
我刚刚添加了这个【参考方案3】:
我过去处理这个问题的方法是简单地在你的机器上的某个地方创建一个新文件夹作为备用 R 库文件夹,并将相应的包文件夹从你的默认库移动到该文件夹。基本上,当 R 搜索这些包时,它不会找到它,因为 R 不会知道你将它们移动到哪里,除非你告诉 R 在哪里搜索。 请按照以下步骤执行此操作:
-
在您的 PC 上创建一个新文件夹以用作辅助 R 库文件夹。例如,我的 windows 文档中有一个名为 secondRlibrary 的文件夹,其路径如下("C:\Users\myusername\Documents\secondRlibrary")
转到安装包的 R 库文件夹。在我的 Windows PC 上,它位于“C:\Users\myusername\Documents\R\win-library\3.0.2”中。它们有时也可以在以下文件夹中找到:("C:\Program Files\R\R-3.0.2\library","C:\Program Files(x86)\R\R-3.0.2\library" ),具体取决于您运行的 R 版本。(我运行的是 3.0.2 版)
查找并移动(剪切和粘贴)文件夹以及相应包的所有内容到新文件夹。这些文件夹通常与 R 包名称具有相同的名称。当R启动时就是这样。确保将它们从我上面列出的所有文件夹中删除到您刚刚创建的新文件夹中。
如果您启动 R,包将不会自动加载,因为它们不会在 R 的默认库位置中找到(除非您告诉它,否则 R 无法自动找到它们)。
如果您想单独加载包,请使用带有 lib.loc 参数的库函数来指定包含该包的库的路径(在本例中为您刚刚创建的新文件夹)。例如,如果我想加载 RMySQL 包,我会使用以下代码
library("package:RMySQL",lib.loc = "C:/Users/myusername/Documents/secondRlibrary")
-
或者,如果您不想在上述库函数中使用 lib.loc 参数,您可以在 R 脚本的开头运行此行,也就是说,如果您需要在那些 R 脚本中使用这些包:
.libPaths(c(.libPaths(),"C:/Users/myusername/Documents/secondRlibrary"))
。
然后您可以在没有 lib.loc 参数的情况下运行库函数。上面的行会将新创建的文件夹添加到 R 的默认文件夹列表中以查找包。
【讨论】:
以上是关于启动 R/RStudio 时不需要加载 R 中的包?的主要内容,如果未能解决你的问题,请参考以下文章