【问题标题】:How to avoid class name conflict with a package "loaded via a namespace (and not attached)" (qdap & openssl)如何避免与“通过命名空间加载(且未附加)”的包发生类名冲突(qdap & openssl)
【发布时间】:2017-07-19 17:21:33
【问题描述】:

使用qdap::polarity()函数有时会遇到错误:

derive_pubkey(key) 中的错误: RAW() 只能应用于“原始”,不能应用于“列表”

我相当确定这是由于qdapkey 类与openssl 包的key 类冲突(因为错误消息中引用了来自opensslderive_pubkey())。

openssl 出现在sessionInfo()loaded via a namespace (and not attached): 部分时会发生错误,并且它似乎会抛出关键类的方法调度并导致错误。

我只能通过重新启动我的 R 会话来修复错误。有没有办法从会话中删除openssl 的足迹来解决这个问题?或者是否有另一种方法可以在不重新启动 R 的情况下避免此问题?

重现错误

> successful      <- qdap::polarity("testing")
> load_openssl_ns <- body(openssl:::print.key)
> fails           <- qdap::polarity("testing")
Error in derive_pubkey(key) : 
  RAW() can only be applied to a 'raw', not a 'list'

【问题讨论】:

    标签: r qdap


    【解决方案1】:

    对于脏修复运行

    `[[.qdap_hash` <- `[[.data.frame`
    

    检查中...

    > qdap::polarity("test")
      all total.sentences total.words ave.polarity sd.polarity stan.mean.polarity
    1 all               1           1            0          NA                 NA
    > library(openssl)
    Warning message:
    package ‘openssl’ was built under R version 3.3.3 
    > qdap::polarity("test")
    Error in derive_pubkey(key) : 
      RAW() can only be applied to a 'raw', not a 'list'
    > `[[.qdap_hash` <- `[[.data.frame`
    > qdap::polarity("test")
      all total.sentences total.words ave.polarity sd.polarity stan.mean.polarity
    1 all               1           1            0          NA                 NA
    > 
    

    polarity 中的违规行是words &lt;- c(posneg, alter[[1]])

    对象alter 使用alter_env 创建,它创建了一个具有“qdap_hash”、“key”等类的对象

    qdap_hash 没有它自己的 '[[' 方法,因此它会检查 key 是否具有它通常没有的 '[[' 方法。一旦 openssl 被加载,就会有一个 [[ 键的方法,所以它使用它并给出错误,因为它不是预期的形式。如果我们为 qdap_hash 定义自己的方法,该方法甚至在尝试使用 [[.key 之前就被调用,那么我们就绕过了这个问题。 qdap 的作者已被告知该问题和可能的修复方法。

    【讨论】:

    • 感谢您的发现。我已将此添加到 qdapTools 的导出中,它将修复所有其他依赖 qdapTools 的软件包。 qdapTools 开发版可以安装:if (!require("pacman")) install.packages("pacman"); p_load_current_gh('trinker/qdapTools')
    • @TylerRinker 有什么想法你下一次推动 CRAN 将是 qdap 吗?
    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多