Я пытаюсь создать метод замены для класса, но я пытаюсь понять, как передать индекс замены.Вот игрушечный пример:
Вот ExampleClass
:
# class definiton
setClass('ExampleClass', representation(lists = 'list'))
# class constructor
ExampleClass <- function(lists){
ec <- new('ExampleClass', lists = lists)
}
А вот мои методы получения и установки:
setGeneric('seeLists', function(x) standardGeneric('seeLists'))
setMethod('seeLists', 'ExampleClass', function(x){
return(x@lists)
})
setGeneric('seeLists<-', function(x, i, value)
standardGeneric('seeLists<-'))
setMethod('seeLists<-', 'ExampleClass', function(x, i, value){
x@lists[[i]] <- value
return(x)
})
Теперь, если я создамобъект класса ExampleClass
Я могу получить доступ к элементам в поле списков.
testObj <- ExampleClass(list('a' = c(1:3), 'b' = c(4:6)))
seeLists(testObj)
$a
[1] 1 2 3
$b
[1] 4 5 6
seeLists(testObj)[[1]]
[1] 1 2 3
Но если я хочу заменить один из них, как мне указать интерпретатору, какой параметр i
.
newitem <- c(7:9)
seeLists(testObj)[[2]] <- newitem
Error in x@lists[[i]] <- value : [[ ]] with missing subscript
Полагаю, что способ, которым я определил seeLists<-
метод замены, неверен, может ли кто-нибудь просветить меня, какой путь правильный?Бонус: что если бы это был двухмерный объект, как бы вы определили j
?Заранее спасибо.