我在 R 中有一个 S3 对象,例如:
myObject <- list(
someParameter1 = 4,
someList = 1:10
)
class(myObject) <- "myClass"
我为这个类创建了一个提取方法:
"[.myClass" <- function(x, i) {
x$someList[i] * x$someParameter1
}
myObject[5]
# 20
现在我想创建一个赋值方法(?Extract
据我所知,这叫做子赋值),这样我就可以写:
myObject[5] <- 250
myObject[5]
# 1000
我首先天真地尝试将其写为
"[<-.myClass" <- function(x, i, value) {
x$someList[i] <- value
}
但由于某种原因,这替换myObject
为value
. 我怀疑我必须修改x
然后assign("someName", x, pos=somewhere)
,但我怎样才能可靠地确定someName
和somewhere
?
还是有其他方法可以做到这一点?