r语言 - [R6]as.vector(x, "symbol") 中的错误:无法将类型 'environment' 强制转换为类型 'symbol' 的向量



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

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)
}

在某些情况下,它是成功完成的。

someAnalysis(tbl)
[1] "y"
[1] "a"

但是,以下代码中会出现错误

test = Test$new("y")
someAnalysis(tbl, test)
Error in as.vector(x, "symbol") : 
cannot coerce type 'environment' to vector of type 'symbol'

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

请告诉我如何避免使用测试类和某些分析方法时出错

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

test = Test$new("y")

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

someAnalysis(tbl, test)

在这里,as.name期待一个可以强制到字符向量的对象:

tbl = tbl %>%
filter(!!as.name(y_name) == y)

但是在您的调用中,y_name正在传递您的 R6 对象,该对象类型为environment。因此你的错误。

相关内容

最新更新