【问题标题】:How can I stop a package from loading on startup in Rstudio如何在 Rstudio 启动时阻止包加载
【发布时间】:2017-12-23 17:03:00
【问题描述】:

我有一个我一直在从事的 Rstudio 项目。自从我上次将 Rstudio 更新为 1.0.143 - Mac OS X 10.6+(64 位)以来,项目无法启动。 我认为它可能与一个在启动时自动加载的包相关联,并且出于某种原因尚未决定停止使用 R/Rstudio。 XLConnect...

我尝试从目录中删除 .RData、.Rhistory 和 .Rproj.user。只有删除 .RData 有效,Rstudio 启动时没有问题。我的目录、我的主目录或站点范围的文件中似乎也没有任何 .RProfile 文件。

现在我什至无法打开 Rstudio 会话,因为它因错误而崩溃

R encountered a fatal error. The session was terminated.

我可以毫无问题地打开其他 Rstudio 会话。

当我打开一个单独的 R 会话(没有 R 工作室)并尝试

load('path/to/.RData')

我收到以下错误消息:

* 发现段错误 * 地址 0x18,导致“内存未映射”

追溯: 1: dyn.load(file, DLLpath = DLLpath, ...)

2: library.dynam(lib, package, package.lib)

3: loadNamespace(j

4: asNamespace(ns)

5: namespaceImportFrom(ns, loadNamespace(j

6: 加载命名空间(名称)

7: doTryCatch(return(expr), name, parentenv, handler)

8: tryCatchOne(expr, names, parentenv, handlers[[1L]])

9: tryCatchList(expr, classes, parentenv, handlers)

10: tryCatch(loadNamespace(name), error = function(e) { warning(gettextf("namespace %s is not available and has been

在处理对象 %s"、sQuote(name)[1L]、sQuote(where)) 时由 .GlobalEnv 替换\n,域 = NA,调用。= >FALSE,立即。= TRUE) .GlobalEnv})

11: ..getNamespace(c("openxlsx", "4.0.17"), "uwc.sel.book")

12:加载(“./Dropbox/OxfordTT2017/DNAextraction_26052017/ColWork2017/Fielddata_04052016/.RData”)

可能的行动:

1:中止(使用核心转储,如果启用)

2:正常 R 退出

3:退出 R 而不保存工作区

4:退出R保存工作区

所以我正在寻找一种方法来阻止 Rstudio 会话在启动时加载包(我不知道为什么它首先会这样做,因为我不记得设置任何类型的 RProfile..) .

【问题讨论】:

    标签: r rstudio xlconnect rdata


    【解决方案1】:

    您似乎在以前的 RStudio seeion 中创建了一些对象,它们需要某些包。当您关闭 RStudio 时,您的工作区保存在 .RData 文件中。然后,如果您再次启动该项目,RStudio 将尝试恢复上一个工作区,但这些对象需要某些包才能工作。所以你会看到 RStudio 在启动时加载了这些包。

    例如,新建一个 RStudio 项目。

    install.packages('phylobase')
    library(phylobase)
    mytree <- phylo4(x=matrix(data=c(4,1, 4,5, 5,2, 5,3, 0,4), ncol=2, byrow=TRUE), tip.label=c("speciesA", "speciesB", "speciesC")) 
    

    关闭该项目并重新打开它(确保保存工作区)。

    R version 3.4.1 (2017-06-30) -- "Single Candle"
    ...
    Type 'q()' to quit R.
    
    [Workspace loaded from W:/work/Git/bookdown-minimal/.RData]
    
    Loading required package: phylobase
    > search()
     [1] ".GlobalEnv"        "package:phylobase" "tools:rstudio"     "package:stats"     "package:graphics" 
     [6] "package:grDevices" "package:utils"     "package:datasets"  "package:methods"   "Autoloads"        
    [11] "package:base" 
    

    mytree是一个S4类对象,可以看到phylobase是自动加载的。您可以参考 S4 类的文档。

    解决方案

    1. 您必须安装所需的软件包或放弃.RData 文件。
    2. 您可以通过Tools -> Global Options... 取消选中Resotore .RData into workspace at startup 来阻止RStudio 在启动时加载包。除非您执行 1,否则您仍然无法使用 .RData 文件中的对象。

    【讨论】:

    • 对象需要包吗? ....我认为使用您需要包的对象,但您肯定不需要加载包以使对象存在而没有问题。
    • 我已经给你展示了一个例子。您需要回忆您使用过的软件包并安装丢失的软件包。或者您可以分享您的.RData 文件,我会为您解决。您可以将其发送到 GitHub。
    • 谢谢@gitzhuoer。我不认为 openxlsx 是问题...我很确定 R 在 XLConnect 的 java 位上有问题(我已经用谷歌搜索了这个问题,发现其他人也有类似的问题)。我将在下面添加我的解决方案。
    • 恭喜!由于我无法访问您的 .RData 文件,因此很难确定哪些软件包出错了。我只是从错误消息的第 11 点猜测 openxlsx
    【解决方案2】:

    这就是我为解决问题所做的:

    以下所有内容都在包含*.RProj 文件的目录中。

    首先,我通过在终端中运行它来“隐藏” .RData 文件。

    mv .RData ./.RData_old
    

    接下来,我在 R 会话(不是 Rstudio)中运行它:

    remove.packages('XLConnect', 'XLConnectJars')
    

    然后我关闭了 R 会话并打开了 Rstudio 项目以确保它在没有 RData 文件的情况下可以正常打开。

    之后我找回了我的 RData 文件

    mv .RData_old ./.RData
    

    最后我再次打开了项目文件,然后!

    它抱怨未安装软件包,但至少我知道需要哪些软件包。此外,我的数据和结果并没有丢失。

    【讨论】:

    • 幸运的是,您知道在这种情况下哪些软件包可能出错。但出于一般目的,需要一个空的 R 环境(没有附加包)。分享.RData 文件并寻求其他人的帮助或安装另一个R 可能是个好主意。
    【解决方案3】:

    分享我的解决方案:在 Rstudio 中,工具 -> 全局选项 -> 常规 -> 取消选中“启动时恢复最近打开的项目”

    之前我删除了我的 .Rprofile,默认 .Rdata,并在全局选项中取消选中“启动时将 .RData 还原到工作区”。这些都不能阻止在启动 Rstudio 时加载不需要的包。

    我现在正在调试可能导致问题的项目,因为我不知道正在打开一个项目。

    不确定这是否能解决您的问题,但我发现此页面试图调试我的问题,但在其他地方我没有看到取消选中“启动时恢复最近打开的项目”。随时告诉我将此答案移至其他地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 2021-10-14
      • 2012-12-23
      • 1970-01-01
      • 2012-06-20
      • 2016-01-09
      • 1970-01-01
      相关资源
      最近更新 更多