2012-12-11 1 views
7

data.tableクラスをオブジェクトから削除してdata.frameに戻す最も安全な方法は何ですか?私は、次のコードに依存しているスクリプトを使用していますので、私は聞いて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のオブジェクトを使用して罰金を働かせます。

+1

これはdata.frameでも機能しません。 'DF mnel

+0

'data.table'で動作しなかったものを正確に記述するために投稿を編集しました – Michael

答えて

11

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" 
+2

最近では' setDF' –

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 
関連する問題