安全地将data.table转换回data.frame

时间:2012-12-11 00:13:48

标签: r data.table

从对象中删除/删除data.table类,将其转换回data.frame是最安全的方法是什么?

我问,因为我使用的脚本依赖于以下代码:

newcol.index <- ncol(my.data) +1
my.data[,newcol.index] <- 3
colnames(my.data)[newcol.index] <- "test"

data.table软件包显然不喜欢这样,但它使用类data.frame的对象处理罚款。

3 个答案:

答案 0 :(得分:14)

data.tables的as.data.frame方法可能是最安全的函数。 (尝试输入getAnywhere("as.data.frame.data.table")以确切了解其功能。)

library(data.table)
DT <- data.table(a=1:4, b=letters[c(1,1,2,2)], key="a")

class(as.data.frame(DT))  ## OR:  as(X, "data.frame")
# [1] "data.frame"

答案 1 :(得分:4)

如果您愿意将脚本转换为data.table,可以使用:=通过引用分配,这将自动分配到(ncol(youdata)+1)th列,您可以传递一个字符向量这个函数的LHS的名称。它将通过引用分配,因此不需要复制!

DT <- data.table(a = 1, b = 2)

DT[,'test' := 3]


DT
   a b test
1: 1 2    3

答案 2 :(得分:0)

这是如何从 data.table 转换为数据框架

的示例
library(tidyverse)
library(data.table)

df <- data.frame(a = 1:5, b = 6:10, c = LETTERS[5:9])
class(df)
#[1] "data.frame"

df <- data.table(df)
class(df)
#[1] "data.table" "data.frame"

class(df) <- class(as.data.frame(df))
class(df)
#[1] "data.frame"