data.tableパッケージオプションを提供する:決定行インデックスRで
:「私は」に 一致することを「X」の整数の行番号を返す「TRUE」 。
ただし、Iはby
を使用して確立グループ内の「X」の整数行番号、j
内、入手のない方法を見ません。例えば
、...
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6))
所与... Iは、Yの各値に対してDT内にインデックスを知りたいです。
私の価値は、data.tableの効率的に計算されたグループに基づいてグループワイズ計算を実行しようとしている別のデータ構造(ADS)と並行してdata.tableを使用しているということです。
ADS<-sample(100,nrow(DT))
Iは、回避策として、DT $ YグループIは、IFによって決定ADSのGroupWiseでの平均値を計算することができる:例えば
は、ADSを想定すると、DTの各行の値を有するベクトルであります最初に新しいシーケンス列をdata.tableに追加します。
DT[,seqNum:=seq_len(nrow(DT))]
DT[,mean(ADS[seqNum]),by=y]
これにより、新しい列を追加することができます。
私はこの例では、私はtapplyを使用して同じ答えを得ることができることを実現:
tapply(ADS,DT$y,mean)
しかし、私は、(特にとき、列「で」data.tables効率的なグループ化のパフォーマンス上の利点を得ることはありませんインデックスされます)。
多分私は見落としているいくつかの構文がありますか?
おそらく、これはdata.tableに追加する簡単な機能であり、私はそれを要求する必要があります(ウインク、ウインク)???
提案構文:任意に設定「.which」グループインデックスに、書き込みを可能にする:グループが連続したブロックに格納されているように
DT[,mean(ADS[.which]),by=y,which=TRUE]
私は私が従わないことを恐れている。 ADSとDTの間で実行したい計算の例を挙げられますか? –
Blue、実際の例を示しました...私の最後のコード行は、DTのインデックスを使ってADSのグループワイズ平均を計算しています。私の_real_アプリケーションでは、ADSのデータ構造はベクトルではなく、 'GenomicRanges'オブジェクトであり、私のDTは範囲に関するメタデータです。いずれにしても、以下のジョシュとマシューは「事件」にある。ありがとう! – malcook