我在下面的代码中使用了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对象会出错?
请告诉我如何避免在使用测试类和someAnalysis方法时出错
发布于 2019-12-27 21:47:45
在这里,您正在创建一个新对象:
test = Test$new("y")在这里,您将对象传递给参数y_name,而不是参数test
someAnalysis(tbl, test)在这里,as.name需要一个可以被强制转换为字符向量的对象:
tbl = tbl %>%
filter(!!as.name(y_name) == y)但是在您的调用中,y_name被传递给您的R6对象,该对象的类型为environment。这就是你的错误。
https://stackoverflow.com/questions/59495180
复制相似问题