2016-08-16 7 views
1

私はbootstrapingdplyrを試していますが、単純なコード行が残っています。機能bootstrapを使用してR - dplyrブートストラップいくつかの変数

は、私はしかし、より多くの変数(列を取得するにはいいだろう素敵な簡単な出力

replicate  x 
     (int) (dbl) 
1   1  6 
2   1  8 
3   2  6 
4   2  8 
... 

を取得するために

library(dplyr) 
library(broom) 

mtcars %>% bootstrap(10) %>% 
    do(tidy(sample(.$cyl, 2))) 

を行うことが可能であることoutを見つけました)しかし、私はそれを理解できません。

私は

mtcars %>% bootstrap(10) %>% 
    do(tidy(sample(., 2))) 

または

mtcars %>% bootstrap(10) %>% 
    do(tidy(sample_n(2))) 

のようなものが働くだろうと思ったが、それはしません。

私はいくつかの変数をサブセットすることができますどのように任意の手掛かり?

私は (出力

replicate cyl mpg disp 
     (int) (dbl) 
1   1  6 21 ... 
2   1  4 22 ... 
3   2  6 ... 
4   2  8 ... 
... 

(私はランダムに2例sample = 2を選択していると私は、このルーチンを繰り返す(bootstrap)10回のような何かを得るためにmpgcyldispを取得したい想像してみて)

set.seed(123) 
sapply(mtcars, function(v) sample(v,2)) 

を使用して

+0

のようなものを使用することができますちょうど束を得るためにあなたの目標です元のデータフレーム内の各列の置換えを伴うランダムサンプルの数?あなたは最終的にフィットしようとしているモデルは何ですか?役に立つかもしれ[ブートストラップビネット(https://github.com/dgrtwo/broom/blob/master/vignettes/bootstrapping.Rmd)でほうきとブートストラップ上のいくつかのより多くの例があります。 –

+0

@Keithは、おかげで私はそれを見てみましょう。それはモデルに適合するものではなく、単にデータ操作です。投票した人は誰でも説明がありますか?感謝 – giacomo

答えて

3

あなたは、これはあなたが望むものであり、および/またはそれが行うことが列が互いに(わからないの独立してサンプリングされmtcars、の各列から2つの値をサンプリングすることができますセンス)。したがってbroomを使用したソリューションは、次のようになります。

mtcars %>% 
    bootstrap(10) %>% 
    do(tidy(sapply(., function(v) sample(v,2)))) 

、一方で、列の間の関係を維持することが重要である場合、あなたは

do.call("rbind",lapply(1:10, function(dum) mtcars[sample.int(nrow(mtcars), 2), ])) 
+0

ありがとう!非常に便利。 – giacomo

関連する問題