首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次拆分多个包

一次拆分多个包
EN

Stack Overflow用户
提问于 2013-07-09 20:39:46
回答 4查看 2.1K关注 0票数 12

this answer的启发,我正在寻找一种同时分离多个包的方法。

当我加载Hmisc时,

代码语言:javascript
复制
# install.packages("Hmisc", dependencies = TRUE)
require(Hmisc)

R还加载survivalsplines。我的问题是,是否有一种方法可以一起卸载这个组?

我目前正在做这样的事情,

代码语言:javascript
复制
detach(package:Hmisc, unload = T) 
detach(package:survival, unload = T) 
detach(package:splines, unload = T)

我试过了

代码语言:javascript
复制
detach(package:c('Hmisc', 'survival', 'splines'), unload = T)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-09 21:10:01

另一种选择:

代码语言:javascript
复制
Vectorize(detach)(name=paste0("package:", c("Hmisc","survival","splines")), unload=TRUE, character.only=TRUE)
票数 11
EN

Stack Overflow用户

发布于 2013-07-09 21:00:06

?detach明确排除了提供字符向量(而不是标量,即要分离的多个库)作为其第一个参数的可能性,但您始终可以创建一个辅助函数。这将接受多个输入,这些输入可以是字符串、名称或数字。数字与初始搜索列表中的条目相匹配,因此搜索列表在每次分离后动态更新的事实不会导致它中断。

代码语言:javascript
复制
mdetach <- function(..., unload = FALSE, character.only = FALSE, force = FALSE)
{
    path <- search()
    locs <- lapply(match.call(expand=FALSE)$..., function(l) {
        if(is.numeric(l))
            path[l]
        else l
    })
    lapply(locs, function(l)
        eval(substitute(detach(.l, unload=.u, character.only=.c, force=.f),
        list(.l=l, .u=unload, .c=character.only, .f=force))))
    invisible(NULL)
}

library(xts) # also loads zoo

# any combination of these work
mdetach(package:xts, package:zoo, unload=TRUE)
mdetach("package:xts", "package:zoo", unload=TRUE)
mdetach(2, 3, unload=TRUE)

eval(substitute(...打交道是必要的,因为除非是character.only=TRUE,否则detach会以非标准的方式处理它的第一个参数。它检查它是否是一个名称,如果是,则使用substitutedeparse将其转换为字符。(由于detach(2, character.only=TRUE)仍然有效,所以character.only参数的名称确实是错误的。它真的应该被称为"accept.names“之类的。)

票数 5
EN

Stack Overflow用户

发布于 2013-07-10 01:21:55

在回答我自己的问题时,我想回答以下问题:

代码语言:javascript
复制
detlist<-c('Hmisc','survival','splines')

lapply(detlist, function(k) detach( paste('package:', k, sep='', collapse=''), unload=TRUE, char=TRUE))

工作得很好。base::detach顶部的排序功能有点不稳定,但使用character.only=TRUE可以让我很好地完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17548385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档