1
我想复制包含列表字段的引用类(foo
)的实例。列表字段包含另一个类的实例(bar
)。使用$copy()
方法复制foo
实例时,不会复制列表实例并继续引用同一对象。下面的代码说明了这个问题。有没有解决的办法?我如何做一个真正的深层复制?创建引用类的深层副本:不适用于列表字段?
bar<-setRefClass("bar", fields = list(name = "character"))
foo<-setRefClass("foo", fields = list(tcp_vector = "list"))
x1<-foo()
x1$tcp_vector <- list(bar(name = "test1"))
x1$tcp_vector[[1]]$name # equals "test1"
x2 <- x1$copy()
x2$tcp_vector[[1]]$name # equals "test1"
x2$tcp_vector[[1]]$name <- "test2" # set to "test2"
x2$tcp_vector[[1]]$name # equals "test2"
x1$tcp_vector[[1]]$name # also equals "test2"??
没有关于ref类的线索,如果复制是自动正确实现的,但是你可以用'copy = new(“MicroPlate”)之类的东西来覆盖它 listOldVars = ls(envir = self @ .data,all.names = T) for(i in listOldVars){ copy @ .data [[i]] = self @ .data [[i]] } return(copy)' – phonixor 2014-08-28 14:41:34