我一直在玩 R6 ab bit 并尝试实现一个替换功能(在精神上类似于base::`diag<-`()
)。得知以下内容不起作用,我并不感到惊讶
library(R6)
r6_class <- R6Class("r6_class",
public = list(
initialize = function(x) private$data <- x,
elem = function(i) private$data[i],
`elem<-` = function(i, val) private$data[i] <- val
),
private = list(
data = NULL
)
)
test <- r6_class$new(1:5)
test$elem(2)
#> [1] 2
test$elem(2) <- 3
#> Error in test$elem(2) <- 3 :
#> target of assignment expands to non-language object
这在前缀表示法中对应什么?以下所有工作都按预期工作,所以我想这些都不是
test$`elem<-`(2, 3)
`$`(test, "elem<-")(2, 3)
我对可能的解决方法不太感兴趣,但更想了解为什么上述内容无效。