0
これはthisへのフォローアップの質問です。 OPが固定されている2つの列x1
とx2
上のブートストラップを実行したい元の質問には:スケーラブルな方法でdata.tableの複数の列をブートストラップするR
set.seed(1000)
data <- as.data.table(list(x1 = runif(200), x2 = runif(200), group = runif(200)>0.5))
stat <- function(x, i) {x[i, c(m1 = mean(x1), m2 = mean(x2))]}
data[, list(list(boot(.SD, stat, R = 10))), by = group]$V1
しかし、私はこの問題はうまくグループとしてそれらを処理することにより、任意の数の列を処理するために拡張することができると思います。たとえば、iris
データセットを使用できます。各種の4次元すべてのブートストラップ平均を計算したいとします。私は溶融を使用してデータを反転してから、Species
、variable
の組み合わせを使用して平均を得ることができます。このアプローチはうまくスケールされると思います。
data(iris)
iris = data.table(iris)
iris[,mean(Sepal.Length),by=Species]
iris[,ID:=.N,]
iris_deep = melt(iris
,id.vars = c("ID","Species")
,measure.vars = c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"))
#define a mean bootstrap function
stat <- function(x, i) {x[i, m=mean(value),]}
iris_deep[, list(list(boot(.SD, stat, R = 100))), by = list(Species,variable)]$V1
これは私の試みです。しかし、ブートストラップ部分は機能していないようです。 Rが次のエラーをスローするとき:
Error in mean(value) : object 'value' not found
誰かがこの問題を解くことができますか?