7

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

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

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

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

我只能通过重新启动我的 R 会话来修复错误。有没有办法openssl从会话中删除 's 的足迹来解决这个问题?或者是否有另一种方法可以在不重新启动 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'
4

1 回答 1

5

对于脏修复运行

`[[.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
> 

中的违规行polaritywords <- c(posneg, alter[[1]])

该对象alter被创建,alter_env该对象创建一个具有“qdap_hash”、“key”等类的对象

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

于 2017-07-19T18:15:39.990 回答