我是R中的面向對象編程的新手,並且很難與正確編寫修改對象的函數編寫。修改S3對象而不返回它?
這個例子的工作原理:
store1 <- list(
apples=3,
pears=4,
fruits=7
)
class(store1) <- "fruitstore"
print.fruitstore <- function(x) {
paste(x$apples, "apples and", x$pears, "pears", sep=" ")
}
print(store1)
addApples <- function(x, i) {
x$apples <- x$apples + i
x$fruits <- x$apples + x$pears
return(x)
}
store1 <- addApples(store1, 5)
print(store1)
但我想應該這樣做,而無需返回整個對象更清潔的方式:
addApples(store1, 5) # Preferable line...
store1 <- addApples(store1, 5) # ...instead of this line
是編寫修改函數的正確方法在R? 「< < - 」?
更新:非常感謝您爲什麼成爲R的OOP羅塞塔石。非常豐富。 我試圖解決的問題在流程方面非常複雜,因此參考類的剛性可能會帶來結構的幫助。我希望我能夠接受所有答案作爲答案,而不僅僅是答案。
如果你真的想修改位置,那麼也許你不應該使用S3對象,而是[引用類](http://adv-r.had.co.nz/OO-essentials。 html#rc)對象。 – Andrie
好評。參考類的目的突然有意義。 – Chris