首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[R6]symbol(x,"symbol")中的错误:无法将‘as.vector’类型强制为'symbol‘类型的向量

[R6]symbol(x,"symbol")中的错误:无法将‘as.vector’类型强制为'symbol‘类型的向量
EN

Stack Overflow用户
提问于 2019-12-27 09:52:00
回答 1查看 87关注 0票数 0

我在下面的代码中使用了R6对象和函数

代码语言:javascript
复制
Test = R6Class(
  "test",

  public = list(
    y_name = NA,

    initialize = function(y_name){
      self$y_name = y_name
    }

  )
)

someAnalysis = function(tbl, y_name = "y_name", y = "a", test = Test$new("y")){
   tbl = tbl %>%
    filter(!!as.name(y_name) == y)

   print(test$y_name)
   print(tbl$y_name)
}

在某些情况下,它成功地完成了。

代码语言:javascript
复制
someAnalysis(tbl)

[1] "y"
[1] "a"

但是,该错误发生在以下代码中

代码语言:javascript
复制
test = Test$new("y")
someAnalysis(tbl, test)
Error in as.vector(x, "symbol") : 
  cannot coerce type 'environment' to vector of type 'symbol'

为什么在函数外部定义Test对象会出错?

请告诉我如何避免在使用测试类和someAnalysis方法时出错

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 21:47:45

在这里,您正在创建一个新对象:

代码语言:javascript
复制
test = Test$new("y")

在这里,您将对象传递给参数y_name,而不是参数test

代码语言:javascript
复制
someAnalysis(tbl, test)

在这里,as.name需要一个可以被强制转换为字符向量的对象:

代码语言:javascript
复制
tbl = tbl %>%
 filter(!!as.name(y_name) == y)

但是在您的调用中,y_name被传递给您的R6对象,该对象的类型为environment。这就是你的错误。

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

https://stackoverflow.com/questions/59495180

复制
相关文章

相似问题

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