gpt4 book ai didi

r - 为什么在这种情况下 setDT 没有任何影响?

转载 作者:行者123 更新时间:2023-12-05 01:03:39 25 4
gpt4 key购买 nike

考虑以下代码

library(data.table) # 1.9.2
x <- data.frame(letters[1:2])
setDT(x)
class(x)
## [1] "data.table" "data.frame"

这是一个预期的结果。现在如果我跑
x <- letters[1:2]
setDT(data.frame(x))
class(x)
## [1] "character"
classx由于某种原因保持不变。

一种可能性是 setDT只改变全局环境中的对象类,所以我试过了
x <- data.frame(letters[1:2]) 
ftest <- function(x) setDT(x)
ftest(x)
class(x)
##[1] "data.table" "data.frame"

好像 setDT不太关心对象的环境以更改其类。

那么是什么导致了上述行为?这只是一个错误还是背后有一些常识?

最佳答案

setDT更改 data.frame并在无形中返回它。既然你不保存这个 data.frame ,丢了。您需要做的就是以某种方式保存 data.frame ,使 data.table也被保存了。例如。

setDT(y <- data.frame(x)) 
class(y)
## [1] "data.table" "data.frame"

或者
z <- setDT(data.frame(x))
class(z)
## [1] "data.table" "data.frame"

关于r - 为什么在这种情况下 setDT 没有任何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24426164/

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