data.table
data.tableの作成
サーチ…
備考
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
したがって、変更は後者の場合には伝播しません。