考虑以下代码
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"
class
的 x
由于某种原因保持不变。一种可能性是
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/