gpt4 book ai didi

r - 在 R 中返回可变或不可变变量的函数

转载 作者:行者123 更新时间:2023-12-04 11:54:31 24 4
gpt4 key购买 nike

<分区>

我认为这个问题与 R 中可变对象与不可变对象(immutable对象)的概念有关,它可能是一个“初学者问题”。我在 data.table 包的函数 names()setnames() 函数中遇到了这个问题。我确信这是预期的行为,但对我来说这非常令人惊讶,而且我确信这不仅与 names() 相关。

假设我有一个名为 dt 的 data.table,其中包含两列 a 和 b:

dt <- data.table(a = 1:5, b= 1:5)
oldNames <- names(dt)

如果你打印 oldNames 它显然显示:

oldNames
[1] "a" "b"

但是如果你用 setnames() 改变 dt 的名字:

setnames(dt,oldNames,c("aNew","bNew"))

变量 oldNames 的内容已经改变。

oldNames
[1] "aNew" "bNew"

我知道在 Python 中,这是某些数据类型(可变数据类型)而非其他数据类型(不可变数据类型)的预期行为。 R里也有这种二分法吗?

对我来说,“预期”行为是变量 oldNames 存储列的名称,它不依赖于 data.table 的 future 更改。例如,对于 length() 函数,这不会发生:

L <- length(dt)
L
[1] 2
dt[,c:=1:5]
L
[1] 2

任何指向有关此行为或解释的一些有用信息的链接都将不胜感激,以及如何编写代码以便 oldNames 在 dt 修改后不会更改其内容。

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