gpt4 book ai didi

r - 为什么 setnames() 会影响复制的表?

转载 作者:行者123 更新时间:2023-12-04 23:18:58 27 4
gpt4 key购买 nike

我想创建一个 data.table 的副本并更改新表中列的名称。当我更改 y$V1 的名称时,x$V1 的名称也会更改。为什么会这样,我该如何避免这种行为?

例子:

x <- data.table(c(1,2,3),c(1,2,3))
y <- x
setnames(y, 'V1', 'new_name')
names(y) == names(x)

最佳答案

因为 R 实现了简单的引用计数,并且通常只在修改时复制而不是在赋值时复制。所以y = x对于任何 xy不会复制任何东西,也不会创建新对象。

结合事实,有些data.table函数可以在不复制的情况下修改对象,如 setnames ,你会看到你看到的效果。

使用 copy正如弗兰克所说,强制进行显式复制。

关于r - 为什么 setnames() 会影响复制的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com