サーチ…


備考

data.tableは、基底Rからのdata.frameクラスの拡張バージョンです。したがって、 class()属性はvector "data.table" "data.frame"あり、data.frameで機能する関数もdata.tableで作業します。ここに示すように、data.tableを作成、ロード、または強制する方法はたくさんあります。

データを強制する

data.frameをdata.tableとしてコピーするには、 as.data.tableまたはdata.table使用します。

DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

DT <- as.data.table(DF)
# or
DT <- data.table(DF)

これはめったに必要ありません。 1つの例外は、 mtcarsなどのmtcarsデータセットを使用する場合mtcars 。このデータセットは、インプレースで変更できないためコピーする必要があります。

data.table()でビルド

同じ名前のコンストラクタがあります:

DT <- data.table(
  x = letters[1:5], 
  y = 1:5, 
  z = (1:5) > 3
)
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
# 3: c 3 FALSE
# 4: d 4  TRUE
# 5: e 5  TRUE

data.frameとは異なり、 data.tableはデフォルトで文字列を要素にdata.tableません。

sapply(DT, class)
#               x           y           z 
#     "character"   "integer"   "logical" 

fread()で読み込み

テキストファイルから読み込むことができます:

dt <- fread("my_file.csv")

read.csvとは異なり、 freadはデフォルトでは文字列ではなく、文字列として読み込みます。

他の例については、[ fread on topic [need_a_link]を参照してください。

setDT()でdata.frameを変更する

効率を上げるため、data.tableは、data.tableをインプレイスにするためにdata.frameまたはlistを変更する方法を提供します:

# example data.frame
DF = data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)

# modification
setDT(DF)

オブジェクトDFはインプレースで修正されているため、結果を<-割り当てないことに注意してください。

data.frameのクラス属性は保持されます:

sapply(DF, class)
#         x         y         z 
#  "factor" "integer" "logical" 

copy()で別のdata.tableをコピー

# example data
DT1 = data.table(x = letters[1:2], y = 1:2, z = (1:2) > 3)

data.tablesが操作される方法のため、 DT2 <- DT1はコピーを作成しません 。つまり、後でDT2列やその他の属性を変更するとDT1にも影響します。実際のコピーが必要な場合は、

DT2 = copy(DT1)

違いを確認するには、コピーなしで何が起こるのでしょうか?

DT2 <- DT1
DT2[, w := 1:2]

DT1
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

そしてコピーで:

DT2 <- copy(DT1)
DT2[, w := 1:2]

DT1
#    x y     z
# 1: a 1 FALSE
# 2: b 2 FALSE
DT2
#    x y     z w
# 1: a 1 FALSE 1
# 2: b 2 FALSE 2

したがって、変更は後者の場合には伝播しません。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow