Data.table: `by = .I`を使用したdata.tableの行操作

作成日 2016年06月07日  ·  3コメント  ·  ソース: Rdatatable/data.table

data.table行操作を行う方法の代替案を探していましたが、バグを見つけたと思います。

これらの3行のコードは、同じ結果を返すはずです。 ただし、 by = .I結果は間違った結果を返すようです。

dt[, sdd := sum(.SD[, 2:4, with=FALSE]), by = 1:NROW(dt) ]
dt[, rowpos := .I][ , sdd := sd(.SD[, -1, with=FALSE]), by = rowpos ]
dt[ , sdd := sd(.SD[, -1, with=FALSE]), by = .I ]

サンプルデータ:
dt <- data.table(V0 =LETTERS[c(1,1,2,2,3)], V1=1:5, V2=3:7, V3=5:1)

Low bug

全てのコメント3件

または、 by = .Iでエラーが発生するはずですが、 i-expression存在する状態で機能させると便利です。

使用したと同様の問題が.Nby ( -再びなめらか1は、単純に試してみてくださいdt[, ..., by = 1:.N] -この特定の式はエラーになりますが、それは本当に"正しい"エラーではありません)。

直感的に聞こえるby = .Iを使用して、機能を「行方向」に追加してみませんか。

1063

こんにちは@leoluyi

行動by = .I同等ですby = NULL 。 このSOディスカッションをご覧くださいhttps://stackoverflow.com/questions/37667335/row-operations-in-data-table-using-by-i

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

st-pasha picture st-pasha  ·  3コメント

mattdowle picture mattdowle  ·  3コメント

andschar picture andschar  ·  3コメント

MichaelChirico picture MichaelChirico  ·  3コメント

franknarf1 picture franknarf1  ·  3コメント