在 R 中工作时分离所有包

2023-12-09

在努力解决另一个问题时,我遇到了这个问题:

我可以通过以下方式删除所有 R 对象:

rm(list = ls(all = TRUE))

是否有等效的命令可以在工作会话期间分离已安装的软件包?

> sessionInfo()
R version 2.12.2 (2011-02-25)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base 

需要(ggplot2)

Loading required package: ggplot2
Loading required package: reshape
Loading required package: plyr

Attaching package: 'reshape'

The following object(s) are masked from 'package:plyr':

    round_any

Loading required package: grid
Loading required package: proto

会话信息()

R version 2.12.2 (2011-02-25)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] ggplot2_0.8.9 proto_0.3-9.1 reshape_0.8.4 plyr_1.4 

我尝试了这种方式,尽管它并不是一个全局解决方案:

pkg <- c("package:ggplot2_0.8.9", "package:proto_0.3-9.1", "package:reshape_0.8.4",  "package:plyr_1.4")

 detach(pkg, character.only = TRUE)

Error in detach(pkg, character.only = TRUE) : invalid 'name' argument
In addition: Warning message:
In if (is.na(pos)) stop("invalid 'name' argument") :
  the condition has length > 1 and only the first element will be used

我正在寻找的是全球性的东西,例如:

  rm(list = ls(all = TRUE))

对于对象,期望它不会删除附加的基础包

thanks;


所以,有人应该简单地回答以下问题。

lapply(paste('package:',names(sessionInfo()$otherPkgs),sep=""),detach,character.only=TRUE,unload=TRUE)

(编辑:2019 年 6 月 28 日) 在最新版本的R 3.6.0中请改用。

invisible(lapply(paste0('package:', names(sessionInfo()$otherPkgs)), detach, character.only=TRUE, unload=TRUE))

请注意,使用invisible(*) 不是必需的,但可用于防止 NULL 回复垂直向 R 窗口发送垃圾邮件。

(编辑:2019 年 9 月 20 日)在版本 3.6.1 中

仅转换加载的可能会有所帮助names(sessionInfo()$loadedOnly)首先显式附加包,然后分离包,就像这样。

lapply(names(sessionInfo()$loadedOnly), require, character.only = TRUE)
invisible(lapply(paste0('package:', names(sessionInfo()$otherPkgs)), detach, character.only=TRUE, unload=TRUE, force=TRUE))

人们可以尝试通过 $basePkgs 卸载基础包,也可以尝试使用unloadNamespace(loadedNamespaces())。然而,这些通常充满错误,并可能破坏基本功能,例如导致sessionInfo()仅返回错误。发生这种情况通常是因为原始封装设计缺乏可逆性。现在timeDate例如,可能会发生不可逆转的损坏。

(编辑:2020 年 9 月 24 日)版本 4.0.2 下面首先加载要测试的包,然后给出完全分离除包“base”和“utils”之外的所有包的顺序。强烈建议不要分离这些包。

    invisible(suppressMessages(suppressWarnings(lapply(c("gsl","fBasics","stringr","stringi","Rmpfr"), require, character.only = TRUE))))
    invisible(suppressMessages(suppressWarnings(lapply(names(sessionInfo()$loadedOnly), require, character.only = TRUE))))
    sessionInfo()

    #the above is a test

    invisible(lapply(paste0('package:', c("stringr","fBasics")), detach, character.only=TRUE,unload=TRUE))
    #In the line above, I have inserted by hand what I know the package dependencies to be. A user must know this a priori or have their own automated
    #method to discover it. Without removing dependencies first, the user will have to cycle through loading namespaces and then detaching otherPkgs a
    #second time through.
    invisible(lapply(paste0('package:', names(sessionInfo()$otherPkgs)), detach, character.only=TRUE,unload=TRUE))

    bspkgs.nb<-sessionInfo()$basePkgs[sessionInfo()$basePkgs!="base"]
    bspkgs.nbu<-bspkgs.nb[bspkgs.nb!="utils"]
    names(bspkgs.nbu)<-bspkgs.nbu
    suppressMessages(invisible(lapply(paste0('package:', names(bspkgs.nbu)), detach, character.only=TRUE,unload=TRUE)))

    #again this thoroughly removes all packages and loaded namespaces except for base packages "base" and "utils" (which is highly not recommended).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中工作时分离所有包 的相关文章

随机推荐

  • 将就地插件添加到 grails 3 项目

    在 grails 2 x 中 我们可以通过在 BuildConfig groovy 中添加以下内容来添加就地插件 grails plugin location my plugin my plugin 我的问题是 我们是否可以在 grails
  • Javascript:将字符串拆分为匹配参数的数组

    我有一个包含数字和数学运算符的字符串 x 混入其中 12 345x6 789 我需要将其转换为由这些数学运算符分隔的数组 12 345 x 6 789 执行此操作的简单方法是什么 连续分割非数字 chars D you get consol
  • Scala 中柯里化的两种方式;每个的用例是什么?

    我正在讨论多个参数列表在我维护的 Scala 风格指南中 我开始意识到有两种方法currying 我想知道用例是什么 def add a Int b Int a b Works add 5 6 Doesn t compile val f a
  • 仅获取与连接表中所有条目匹配的行 (SQL)

    我有以下五个表 ISP Product 联系 AddOn AddOn Product 多对多关系的数据透视表 每个产品都链接到一个 ISP 每个连接都列出到一个产品 通过使用数据透视表 该表只有 2 个字段 一个用于产品 ID 一个用于附加
  • 使用 css 将水平子菜单置于父级下方居中

    最好用小提琴来展示 http jsfiddle net Jnttm 如何使子菜单位于父菜单项下方的中心 我发现的许多居中技巧并不适用 因为子元素比父元素更宽 这可以用纯 CSS 实现吗 还是我必须求助于 javascript 如果需要 JS
  • 为什么同步字段变量并在同步块内递增它会导致打印乱序?

    我有一个简单的代码片段 public class ItemManager private Integer itemCount 0 public void incrementAndPrint synchronized this System
  • 从 Firefox WebDriver 源代码中删除机器人识别功能?

    方法之一WebDriver 将自己标识为外部网站的机器人是通过设置webdriver 活动标志为真 SO 上的用户建议可以修改Chrome Driver用于删除所有机器人识别属性的源代码 请参阅this and this回复 是否可以通过修
  • 在android中将word文档转换为pdf

    我知道 stackoverflow 中有 n 个关于同一问题的问题 但我没有得到我想要的东西 我什至尝试使用jwordconvert jar from Qoppa软件 但是唉 它说 Unable to execute dex Java he
  • 屏幕锁定时服务暂停

    出于测试目的 我制作了一项会发出蜂鸣声的服务 每 1 分钟一次 还没有客户端 服务器接口 正常时会发出蜂鸣声 屏幕打开 但当它进入睡眠状态时 蜂鸣声停止 我正在制作一个必须定期轮询服务器的应用程序 为了某件事 为此 我正在尝试创建一项持续不
  • 正则表达式帮助,贪婪与非贪婪

    嘿 我有一个很大的 html 字符串 比如 a style background none href swatch4 a a style background none a
  • 如何在不更改视图模型的属性 getter 的情况下格式化 XAML 中的字符串?

    我的应用程序中有以下界面 public interface IContactMedium string ContactString get set string Type get set bool IsValid 该接口适用于代表某人某种联
  • 将目录添加到 $LOAD_PATH (Ruby)

    我见过两种常用的技术 用于将当前正在执行的文件的目录添加到 LOAD PATH 或 我看到了这样做的好处 以防您不使用 gem 显然 其中一个似乎比另一个更冗长 但是有理由选择其中一个而不是另一个吗 第一种冗长的方法 可能有点矫枉过正 LO
  • WEKA & MySQL 设置连接

    WEKA Explorer 无法打开与 MySQL 的连接 连接到 jdbc mysql MYSERVER 3306 NAME true 顺便说一句 mysql驱动程序已下载 mysql connector java 5 1 14 bin
  • 为什么使用 python split 时字符串会发生变化?

    test str Question The cryptocurrency Bitcoin Cash BCH USD settled at 1368 USD at 07 00 AM UTC at the Bitfinex exchange o
  • 简单java程序中的意外结果

    我是java新手 我的问题是按下一个键后输出显示2个数字 我不明白为什么 这是代码 class ForTest public static void main String args throws java io IOException i
  • 使用 zend-decorator 格式化表列中的 Zend_Form_Element_Radio 和行中的其他 Zend Form 元素

    我想用装饰者将以下 Zend Form 格式化为表格 将描述放在第一列中and第二列中的 Zend Form Element Radio 选项and add 2 select正如您在后面的 html 示例中看到的那样 在每一行中 我需要一个
  • 如何在C++中将文件编码格式设置为UTF8

    我的软件的要求是包含导出数据的文件的编码应为 UTF8 但是当我将数据写入文件时 编码始终是 ANSI 我使用 Notepad 来检查这一点 我目前正在做的是尝试通过读取文件来手动转换文件 将其转换为 UTF8 并将文本写入新文件 line
  • Java ServletContext

    我有一个 JSP 网站 而不是 Spring MVC 它有一个配置文件 web xml 我想要获取 web xml 文件中的一些设置 但是 我想从 源包 文件夹中的类中访问这些设置 我知道我可以将 ServletContext 从 JSP
  • 验证空手道框架中的浮点值范围

    我的场景是检查字段是否接受 0 01 到 25000 的范围 它可以是十进制值 在空手道框架中执行此操作的方法是什么 我使用了下面的正则表达式 这是不正确的 正则表达式 0 9 只需乘以 1 即可将字符串转换为数字 def foo 0 2
  • 在 R 中工作时分离所有包

    在努力解决另一个问题时 我遇到了这个问题 我可以通过以下方式删除所有 R 对象 rm list ls all TRUE 是否有等效的命令可以在工作会话期间分离已安装的软件包 gt sessionInfo R version 2 12 2 2