使用qdap::polarity()函数有时会遇到以下错误:
derive_pubkey(key)中的错误: RAW()只能应用于“raw”,而不能应用于“list”
我相当肯定,这是由于qdap的key类与openssl包的key类相冲突(因为错误消息中引用了openssl中的derive_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'发布于 2017-07-19 18:15:39
对于肮脏的修复运行
`[[.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 <- c(posneg, alter[[1]])
对象alter是用alter_env创建的,该对象创建了一个具有类"qdap_hash“、"key”、.
qdap_hash没有它自己的' [[‘方法],所以它检查键是否有'[[’方法],而它通常没有。一旦装载了openssl,就会有一个[[方法key ],所以它使用这个方法,并给出错误,因为它不是预期的形式。)如果我们为qdap_hash定义了我们自己的方法,甚至在尝试使用[[.key之前就会调用它,那么我们就可以绕过这个问题。qdap的作者已被告知这个问题和可能的解决办法。
https://stackoverflow.com/questions/45197158
复制相似问题