diesem kurzen Beispiel Siehe:Wie ändert man eine Liste von R6class-Objekten durch Referenz?
library(R6)
library(pryr)
Person <- R6Class("Person", public = list(name = NA, hair = NA, initialize = function(name,
hair) {
if (!missing(name)) self$name <- name
if (!missing(hair)) self$hair <- hair
}, set_hair = function(val) {
self$hair <- val
}))
ann <- Person$new("Ann", "black")
address(ann)
#> [1] "0x27e01f0"
ann$name <- "NewName"
address(ann)
#> [1] "0x27e01f0"
ann2 <- Person$new("Ann", "white")
g <- c(ann, ann2)
address(g)
#> [1] "0x32cc2d0"
g[[1]]$hair <- "red"
address(g)
#> [1] "0x34459b8"
I g[[1]]$hair <- "red"
den Betrieb erwartete g
wie ann$name <- "NewName"
durch Verweis wird sich ändern. Gibt es einen Weg, dies zu erreichen?
Also wenn ich 'g' ändere, wird die Änderung auch auf 'ann' stattfinden. Bedeutet das, dass "g" den Bezug auf "ann" und "ann2" speichert, nicht das ganze Objekt? – mt1022
Ja, da das Objekt Person Referenzsemantik verwendet. – Marcelo