如何在Rstudio中启动时停止加载包

时间:2017-07-18 17:22:41

标签: r rstudio xlconnect rdata

我有一个Rstudio项目,我一直在努力。自从我上次将Rstudio更新为1.0.143 - Mac OS X 10.6+(64位)后,该项目无法启动。 我认为它可能与一个在启动时自动加载的软件包相关联,无论出于何种原因还没有决定停止使用R / Rstudio。 XLConnect ...

我尝试从目录中删除.RData,.Rhistory和.Rproj.user。只删除.RData工作,R​​studio启动没有问题。我似乎在目录,我的主目录或站点范围的文件中没有任何.RProfile文件。

现在我甚至无法打开Rstudio会话,因为它崩溃并出现错误

  

R encountered a fatal error. The session was terminated.

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

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

load('path/to/.RData')

我收到以下错误消息:

  

*抓住了段错*   地址0x18,导致'内存未映射'

     

回溯:   1:dyn.load(文件,DLLpath = DLLpath,...)

     

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

     

3:loadNamespace(j< - i [[1L]],c(lib.loc,.libPaths()),versionCheck = vI [[j]])

     

4:asNamespace(ns)

     

5:namespaceImportFrom(ns,loadNamespace(j< - i [[1L]],c(lib.loc,.libPaths()),versionCheck = vI [[j]]),i [[2L]] ,from = package)

     

6:loadNamespace(name)

     

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不可用且已经

     

在处理对象%s“,sQuote(名称)[1L],sQuote(where)),domain = NA,call。=&gt; FALSE,immediate。= TRUE).GlobalEnv})<时替换\ n。。GlobalEnv / p>      

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

     

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

     

可能的行动:

     

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

     

2:正常退出

     

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

     

4:退出R保存工作区

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

2 个答案:

答案 0 :(得分:4)

似乎你在以前的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 - &gt;停止RStudio在启动时加载软件包Global Options...取消选中Resotore .RData into workspace at startup。除非您执行1.
  3. ,否则您仍然无法使用.RData文件中的对象

答案 1 :(得分:2)

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

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

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

mv .RData ./.RData_old

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

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

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

之后我收回了我的RData文件

mv .RData_old ./.RData

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

它抱怨没有安装包但至少我知道需要哪些包。而且,我的数据和结果不会丢失。