相关疑难解决方法(0)

如何在不重启R的情况下卸载软件包?

我想卸载一个包而不必重新启动R(主要是因为重新启动R,因为我尝试了不同的,冲突的包令人沮丧,但可以想象这可以在一个程序中使用一个函数然后另一个 - 虽然命名空间引用可能是一个更好的主意用于此用途).

?library 没有显示任何可以卸载包的选项.

有一种建议detach可以卸载包,但以下两个失败:

detach(vegan)
Run Code Online (Sandbox Code Playgroud)

错误detach(vegan):无效name参数

detach("vegan")
Run Code Online (Sandbox Code Playgroud)

错误detach("vegan"):无效name参数

那么如何卸载包呢?

r package r-faq

496
推荐指数
9
解决办法
31万
查看次数

如何判断我在R脚本中没有使用哪些软件包?

随着我的代码从版本发展到版本,我知道有一些软件包,我已经找到了更好/更合适的软件包,用于手头的任务或其目的仅限于我现在已经分阶段的一段代码出.

有没有简单的方法来判断在给定的脚本中实际使用了哪些加载的包?我的标题开始变得杂乱无章.

packages r

8
推荐指数
2
解决办法
1416
查看次数

Clear R environment of all objetcs & packages

I tried this command

remove(list = ls())
Run Code Online (Sandbox Code Playgroud)

I expect to clear all R environment (Objects, packages)

r

6
推荐指数
2
解决办法
9359
查看次数

在 R 中分离包

我正在使用一个包:KML(纵向数据的 k 均值)。

\n\n

当加载包时,它会加载 6 个以上的包。

\n\n
Loading required package: kml\nLoading required package: clv\nLoading required package: cluster\nLoading required package: class\nLoading required package: longitudinalData\nLoading required package: rgl\nLoading required package: misc3d\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用完后我试图将其分离。但是,我在尝试时不断收到错误/警告。

\n\n

当使用此步骤分离使用detach("package:kml", unload=TRUE)或/和卸载它们时unloadNamespace("kml"),不会出现任何错误,就像已分离一样。

\n\n

当我检查(.packages()). kml 不再列出,但其他包仍在加载。但是当我检查loadedNamespaces()kml 仍然加载在那里时。现在继续处理下一个包。

\n\n
detach("package:longitudinalData", unload=TRUE)\n
Run Code Online (Sandbox Code Playgroud)\n\n

给我一条警告消息:

\n\n
\n

警告消息: \xe2\x80\x98longitudinalData\xe2\x80\x99 命名空间无法卸载:
\n 命名空间 \xe2\x80\x98longitudinalData\xe2\x80\x99 由 \xe2\x80\x98kml\xe2\x80\x99 导入所以无法卸载

\n
\n\n

包的其余部分依赖于“kml”或“longitudinalData”,因此我对所有包都收到相同的消息。包括 kml 和纵向数据在内的所有包仍然列在loadednamespaces 下。

\n\n

知道如何卸载它们吗?

\n

r package

5
推荐指数
0
解决办法
1万
查看次数

在 R 中卸载/分离所有加载的命名空间和附加包

我遇到了全局范围被附加包 ( sessionInfo()$otherPkgs) 和命名空间 (loadedNamespaces() )。所以我想在我的脚本开始时清除它们。

在这个线程中解决了一半的问题。这个问题的主要区别在于我想卸载命名空间,而不仅仅是分离包。pacman 也很有趣,但似乎也不起作用。

library(dbplyr)
names(sessionInfo()$otherPkgs)
lapply(paste("package:", names(sessionInfo()$otherPkgs), sep=""), 
   detach, character.only = TRUE, unload = TRUE)
# `dbplyr` is detached
names(sessionInfo()$otherPkgs)
Run Code Online (Sandbox Code Playgroud)

但是卸载已加载命名空间的类似方法似乎更具挑战性,因为必须首先卸载依赖于其他名称的包。

这是我的尝试:

# Recursive unload which checks for reverse dependencies (children) along the way
# and unloads them first
myunload <- function(pkg) {
    # Get child (reverse-dependent) packages that have loaded namespaces
    child_pkgs <- unlist(tools::dependsOnPkgs(pkg, which = c("Depends", "Imports"), reverse = T))
    child_pkgs <- child_pkgs[which(child_pkgs %in% loadedNamespaces())]
    # Recursively …
Run Code Online (Sandbox Code Playgroud)

namespaces r package

5
推荐指数
1
解决办法
424
查看次数

更新R中的包:`update.packages`与`install.packages`

我试图加载party库并得到以下错误:

 Loading required package: zoo
 Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
   namespace ‘lattice’ 0.20-24 is already loaded, but >= 0.20.27 is required
 Error: package ‘zoo’ could not be loaded
Run Code Online (Sandbox Code Playgroud)

所以我决定更新同一个会话中的所有包(在R中工作时分离所有包),包括lattice,希望zoo然后在更新party后再正确加载lattice:

 pkgs <- names( sessionInfo()$otherPkgs )
 pkgs <- paste('package:', pkgs, sep = "")
 lapply( pkgs , detach, character.only = TRUE, unload = TRUE)
 update.packages(checkBuilt=TRUE, ask=FALSE,
                 repos="http://r-forge.r-project.org",
                 oldPkgs=c("lattice","zoo","party")
 )
Run Code Online (Sandbox Code Playgroud)

它不起作用(在同一个会话中并且在没有预加载的情况下重新启动之后.RData):

 > library(party)
 Loading …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
2
解决办法
8498
查看次数

标签 统计

r ×6

package ×3

namespaces ×1

packages ×1

r-faq ×1