首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免类名与包“通过命名空间加载(而不是附加)”(qdap & openssl)发生冲突

如何避免类名与包“通过命名空间加载(而不是附加)”(qdap & openssl)发生冲突
EN

Stack Overflow用户
提问于 2017-07-19 17:21:33
回答 1查看 938关注 0票数 7

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

derive_pubkey(key)中的错误: RAW()只能应用于“raw”,而不能应用于“list”

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

openssl出现在sessionInfo()loaded via a namespace (and not attached):部分时,就会发生错误,它似乎取消了键类的方法分派并导致错误。

我只能通过重新启动我的R会话来修复错误。是否有办法从会话中删除openssl的足迹以解决此问题?还是有其他方法可以避免此问题而不重新启动R?

重造错误

代码语言:javascript
复制
> 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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 18:15:39

对于肮脏的修复运行

代码语言:javascript
复制
`[[.qdap_hash` <- `[[.data.frame`

检查..。

代码语言:javascript
复制
> 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的作者已被告知这个问题和可能的解决办法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45197158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档