に基づいdata.table R行を選択し、我々は行番号または状態に基づいて行を選択することができる:data.tableの行番号及び条件
> x <- data.table(letters[1:4], 1:4)
> x
V1 V2
1: a 1
2: b 2
3: c 3
4: d 4
> x[2]
V1 V2
1: b 2
> x[V1 == "d"]
V1 V2
1: d 4
Iは、行番号及び条件の両方を選択することはできませんが:!2
この形式の行番号として解釈されないため
> x[!2 & V2 > 1]
Empty data.table (0 rows) of 2 cols: V1,V2
と考えられます。私は今、それが唯一の中間チェーンdata.tableの列を作成し、このサブセットのための新しい列の値
x[!2][V2 > 1, V3 := "more"]
を割り当てるたかっしかし
> x[!2][V2 > 1]
V1 V2
1: c 3
2: d 4
:私は、私はチェーンの二つの条件をすることができます知っていました。中間テーブルを保存して元のテーブルにマージすることはできますが、面倒です。
実際に私はしばしばdata.table
が適切な行番号を必要と感じます。 .I
はグループに依存する動的数値ですが、すべての行を識別できる一意のIDが必要でした。この一意のIDはマージ/結合で非常に便利です(データには一意のIDがないことがよくあります)。 .i
は、行番号である場合、私は
x[(.i != 2) & (V2 >1), V3 := "more"]
を使用することができ、私は明示的に最初の行番号列を作成することによって、これをシミュレートすることができます。
もう1つの方法は、サブセットdata.tableの変更を元のテーブルに適用することです。 xを元のテーブルとして、x [!2]を部分集合とした場合、x[!2]
の修正が実際にxを修正すると、私の問題も解決されます。もちろん、この種のサブセットは異なる方法で作成する必要があります(例:x[!2, refOriginal = TRUE]
)。ここ
リアルについての議論を発見行番号[ここ](https://github.com/Rdatatable/data.table/issues/1494)、多数の類似した意見を共有しています。 – dracodoc