data.table
に行を適用しようとしていますが、それを動作させることはできません。どうすればいいですか?行が列番号参照でdata.tableに適用されます
library(data.table)
data(diamonds, package= "ggplot2")
dt <- data.table(diamonds)
# what I want, but via data.table
diamonds$sum1 <- apply(dt[,5:10, with=FALSE], 1, sum)
diamonds$sd1 <- apply(dt[,5:10, with=FALSE], 1, sd)
# why don't these work?
dt[, `:=` (sum1= sum(.SD),
sd1= sd(.SD)), .SDcols= 5:10, by= .EACHI]
dt[, `:=` (sum1= sum(dt[,5:10, with=FALSE]),
sd1= sd(dt[,5:10, with=FALSE])), by= .EACHI]
はどちらも、このエラーを与える:
関連Error in
[.data.table
(dt, ,:=
(sum1 = sum(.SD), sd1 = sd(.SD)), .SDcols = 5:10, : object 'f__' not found
'by = .EACHI'のどこかにあなたが望むことをするためのFRがありますが、現時点では参加時に意味があります。必要なら 'by = 1:nrow(dt)'を使ってください。 – eddi
一般的な行の行為を避けるようにしてください。あなたは単に 'melt'を使って長い形式に変換してから、単一の列で操作することができます。あるいは、 'rowMeans'を実行するか、他の多くの行操作でベクトル化された' matrixStats'をチェックアウトすることができます。または、[自分の](http://stackoverflow.com/a/25100036/3001626)ベクター化された関数を記述します。またはRcppを使用します。私が見ているように、Rは、あなたの問題を効率的に解決するためにスマートな技を発明する必要がある言語であり、最初のサイトで最も理にかなっています。 –
@DavidArenburg十分な点があります。しかし、これをRcppに書き込むdevの時間は、 'data.frame'フレームワークを使用するだけの価値はありません。 –