Hello, an S4 class "Foo" is defined with a setter, $. For several reasons, the setter calls a function, .foo.update(). However, bypassing the argument names of the setter does not work. Question 1: Why not and how can I fix this? Question 2: What is the way to define either the function or the setter to modify the original object (not returning the modified copy of it an overwrite the original by assignment)? Thanks, Sören
setClass("Foo", representation( N = "numeric" ), prototype( N = 10000 ) ) .foo.update <- function(object, ...) { args <- list(...) for (i in slotNames("Foo")[pmatch(names(args), slotNames("Foo"), nomatch=0)]) { slot(object, i) <- args[[i]] # indeed more to do here return(object) } } setReplaceMethod("$", "Foo", function(x, name, value) { x <- .foo.update(x, name=value) x } ) x <- new("Foo") x x$N <- 99 x # NULL???? ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel