不可重现的 R 包可用性检查

2024-03-16

在检查软件包向量是否需要安装时,我遇到了一个有趣的错误。要求并卸载 lme4 命名空间会在第二次执行时出现错误,但仅当按特定顺序检查其他一些包时才会出现错误。

isInstalled <- function(package)    # is a package installed and usable?
  {
  loaded <- package %in% .packages()
  out <- requireNamespace(package, quietly=F)
  if(!loaded) try(unloadNamespace(package), silent=F)
  out
  }

isInstalled("car")      # All return TRUE
isInstalled("nnet")
isInstalled("pbkrtest")
isInstalled("lme4")
isInstalled("nloptr")
isInstalled("lme4")     # FALSE (only after commands above)
# no such symbol NLoptR_Optimize in package C:/__Rlibrary/nloptr/libs/x64/nloptr.dll
library(nloptr) # now fails, too

# Problem solved if nnet is checked before car (but not again after car)

我是不是做错了什么isInstalled?

This might be related to the dependency structure of car. Simplified version: simplified car dependency graph

#install.packages(c("miniCRAN","igraph"))
d <- miniCRAN::makeDepGraph(c("car", "nnet", "pbkrtest", "lme4","nloptr"), suggests=FALSE)
plot(d) # for full dependency graph

R 的设计初衷并不是为了允许随意加载和卸载包。您可以尝试这样做,但不能保证成功(尽管经常会成功)。

From ?detach:

如果包有命名空间,则分离它默认情况下不会卸载命名空间(甚至可能在 unload = TRUE 时也不会卸载),并且分离通常不会卸载任何动态加载的编译代码 (DLL)。此外,命名空间中注册的 S3 方法不会被删除。如果您在加载了命名空间的包上使用库,它会附加已加载命名空间的导出。因此,分离并重新附加包可能不会刷新包的部分或全部组件,并且是不可取的。

From ?devtools::unload:

此函数尝试彻底卸载包,包括卸载其命名空间、删除 S4 类定义以及卸载任何已加载的 DLL。不幸的是,S4 类并不是真正设计为干净卸载的,因此我们必须手动修改类依赖关系图才能使其正常工作 - 这适用于我们已经测试过的情况,但可能还有其他情况。同样,自动 DLL 卸载最好针对简单场景进行测试(特别是使用 useDynLib(pkgname) 时,在其他情况下可能会失败。如果您确实遇到失败,请在以下位置提交错误报告:http://github.com/hadley/devtools/issues http://github.com/hadley/devtools/issues.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不可重现的 R 包可用性检查 的相关文章

  • 使用 R,将多个卡方列联表测试应用于分组数据框,并添加包含测试 p 值的新列

    我有一个类似于下面的示例的数据框 这是我的实际数据框的一小部分摘录 frequencies lt data frame sex c female female male male female female male male female
  • R xts:毫秒索引

    如何创建索引包含毫秒的 xts 对象 我在 POSIXlt 帮助页面中找不到任何格式规范 但有一个参考 https stackoverflow com questions 4295407 display time index in r xt
  • 如何让 geom_vline 尊重facet_wrap?

    我四处搜寻 但无法找到答案 我想做一个加权 geom bar 图 上面覆盖有一条垂直线 显示每个方面的总体加权平均值 我无法让这件事发生 垂直线似乎是应用于所有方面的单一值 require ggplot2 require plyr data
  • R模糊字符串匹配根据匹配的字符串返回特定列

    我有两个大型数据集 一个大约有 50 万条记录 另一个大约有 7 万条记录 这些数据集有地址 我想匹配较小数据集中的任何地址是否存在于大数据集中 正如您所想象的那样 地址可以用不同的方式和不同的情况 拼写等来书写 此外 如果只写到建筑物级别
  • R randomForest - 如何使用“getTree”树进行预测

    背景 我可以在 R 中创建一个随机森林 set seed 1 library randomForest data iris model rf lt randomForest Species data iris importance TRUE
  • as.data.frame 将嵌套列表展平为单行,而不是为每个记录创建行[重复]

    这个问题在这里已经有答案了 我有一个嵌套列表 如下所示 mylist lt vector list 2 mylist 1 name lt The Tucson IOT Meetup Group mylist 1 state lt AZ my
  • R 数据框到嵌套列表

    我想将这种格式的数据帧 tbl 转换为以下嵌套列表 tbllst library tidyr tbl lt tribble Col1 Col2 Col3 Var1 Var1 1 Var1 1 1 Var1 Var1 1 Var1 1 2 V
  • R 忽略空值的矩阵列的成对比较

    我有一个数组 我想获取它之间的相似度的度量values在每一列中 我的意思是我希望比较数组的成对列之间的行 并在它们的值匹配时增加一个度量 对于两列来说 所得的测量值最大值将完全相同 本质上我的问题与这里讨论的相同 R 两两比较矩阵中的所有
  • 用整数矩阵对 data.frame 进行子集化

    我一直遇到这个问题 想知道是否有一个简单的解决方法 对于某些情况 我发现考虑将矩阵子集化更合乎逻辑 N lt 12 N NA lt 6 dat lt data frame V1 runif N V2 runif N sel mat lt m
  • 使用 Visual Studio 构建 R 包 (C API)

    我正在尝试使用 Visual Studio 构建一个简单的 R 包 这是我的代码 include
  • R 中的匹配和计数字符串(DNA 的 k 聚体)

    我有一个字符串列表 DNA 序列 包括 A T C G 我想找到所有匹配项并插入到表中 该表的列都是这些 DNA 字母表的所有可能组合 4 k k 是每个匹配项的长度 K mer 必须由用户指定 行代表 DNA 字母表的数量在列表中按顺序匹
  • R - 如何为一个图例元素组合 expression()、paste() 和 formatC() 命令?

    我正在努力创造一个美好的传奇 它应该包含希腊字母 mu 我可以使用表达式 一些文字 即 和 mm 以及使用 formatC 格式化的模型系数来完成此操作 我运行没有问题的是要么没有希腊字母 然后我可以使用简单的粘贴命令 leg txt lt
  • Leaflet Map - 第二个多边形使第一层不可点击

    我正在制作美国社区调查数据地图 目前我有一个主要层 如下所示plotMerge incomePerCapita 它运作良好 有一个完全充实的弹出窗口 图像等等 当我添加第二层以提供县和地区边界时 区域边界变得不可单击 似乎被新层掩盖了 如果
  • 通过变量分割 data.frame [重复]

    这个问题在这里已经有答案了 我将多个主题的数据存储在一个 CSV 文件中 导入 CSV 文件后 我想将每个参与者的数据拆分到自己的 data frame 中 更确切地说 我想采用下面的示例数据 并创建三个新的 data frames 每个
  • R+Hadoop:如何从HDFS读取CSV文件并执行mapreduce?

    在以下示例中 small ints to dfs 1 1000 mapreduce input small ints map function k v cbind v v 2 MapReduce函数的数据输入是一个名为small ints的
  • R2WinBUGS - 使用模拟数据进行逻辑回归

    我只是想知道是否有人有一些使用 R2WinBUGS 包来运行逻辑回归的 R 代码 理想情况下使用模拟数据来生成 真相 和两个连续协变量 Thanks 基督教 PS 生成人工数据 一维情况 并通过 r2winbugs 运行 winbugs 的
  • 错误:“tidyverse”的包或命名空间加载失败:“namespace:dplyr”未导出对象“relocate”

    我使用以下命令安装了 tidyverse install packages tidyverse 但是安装后 当我使用以下命令调用库时 library tidyverse 我收到此错误 Error package or namespace l
  • R 语言 - 等待用户使用 scan 或 readline 输入

    我试图让用户输入一些关键字进行查询 在我的脚本中我使用了 scan 或 readline 我使用 R 嵌入脚本编辑器 Windows 进行了尝试 但是当我执行代码时 它使用我的下一行脚本作为标准输入 这是我的 部分 脚本 keywords
  • 如何在 R 中执行随机森林/交叉验证

    我无法找到对我尝试生成的回归随机森林模型执行交叉验证的方法 因此 我有一个数据集 其中包含 1664 个解释变量 不同的化学性质 和一个响应变量 保留时间 我正在尝试生成一个回归随机森林模型 以便能够预测给定保留时间的物质的化学性质 ID
  • 更改列的顺序

    我正在处理一个包含 gt 40 列的大型数据框 我希望能够移动列 而不必指定所有列名称 例如 a lt c 1 5 b lt c 4 3 2 1 1 Percent lt c 40 30 20 10 10 Labels lt c Cat D

随机推荐