safely turn a data.table back into a data.frame

后端 未结 3 1242
醉酒成梦
醉酒成梦 2020-12-30 04:57

What\'s the safest way to get rid of/remove the data.table class from an object, turning it back into a data.frame?

I ask because I\'m using script that

相关标签:
3条回答
  • 2020-12-30 05:08

    The as.data.frame method for data.tables is presumably the safest function to use. (Try typing getAnywhere("as.data.frame.data.table") to see exactly what it does.)

    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"
    
    0 讨论(0)
  • 2020-12-30 05:20

    This is an example of how to convert from data.table to data frame

    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"
    
    0 讨论(0)
  • 2020-12-30 05:24

    If you are willing to convert your script to data.table, you can use use := to assign by reference, this will automatically assign to the (ncol(youdata)+1)th column, and you can pass a character vector of the names to the LHS of the function. It will assign by reference, so no copying!

    DT <- data.table(a = 1, b = 2)
    
    DT[,'test' := 3]
    
    
    DT
       a b test
    1: 1 2    3
    
    0 讨论(0)
提交回复
热议问题