Arrays 在R中创建向量精确副本的最简单方法?

Arrays 在R中创建向量精确副本的最简单方法?,arrays,r,list,vector,copy,Arrays,R,List,Vector,Copy,我正试图在R中创建一个向量的副本。。。让我们称之为list\u foo 我想创建另一个名为list\u bar的列表,它是list\u foo的精确副本,具有相同的元素和长度。在R中,最简单的方法是什么 首选不导入库的解决方案。R与Python不同,后者的变量名实际上是指向对象的指针 在Python中,您需要额外的库(如copy),而这些库您并不喜欢。在R中,只需执行此操作,即可创建名为list\u bar的新对象: list_bar <- list_foo list\u bar正如Ke

我正试图在R中创建一个向量的副本。。。让我们称之为
list\u foo

我想创建另一个名为
list\u bar
的列表,它是
list\u foo
的精确副本,具有相同的元素和长度。在R中,最简单的方法是什么


首选不导入库的解决方案。

R与Python不同,后者的变量名实际上是指向对象的指针

在Python中,您需要额外的库(如
copy
),而这些库您并不喜欢。在
R
中,只需执行此操作,即可创建名为
list\u bar
的新对象:

list_bar <- list_foo

list\u bar正如Ken在回答和我的评论中指出的那样,我认为99%的R社区会建议您使用不复制任何内容的
list\u bar@DamianoFantini,它们都引用内存中相同的对象
x=c(1,2,3);y=x;pryr::address(x)=pryr::address(y)
@ScottWarchal Correct,除非您修改其中一个对象。。。我在答复中谈到了这一点。尽管如此,我认为您没有理由担心这一点,因为R可以很好地处理更新内存中对象的问题……除非您修改其中一个对象,否则它们是同一个对象。一个可能的优势是当您将GraalVM与FastR一起使用时。当您使用java调用RScript时,
x
library(pryr)
x <- c(1, 2, 3) 
y <- x
pryr::address(x) == pryr::address(y) #true
pryr::address(x)
# [1] "0x5832a668"
x <- "hello world"
x
# [1] "hello world" # updated x, new location in the memory
pryr::address(x)
# [1] "0xa72aab88"
y
# [1] 1 2 3 #still the same
pryr::address(y)
# [1] "0x5832a668"
# the 'y' object
y
# [1] 1 2 3
pryr::address(y)
# [1] "0x7d10bf68"

# let's create a copy of 'y' using sapply()
x <- sapply(y, function(i) i)  

# same vector, different location in the memory
pryr::address(x)
# [1] "0x5a8755b0"

# are they really identical? Yes
identical(x, y)  
# [1] TRUE