2017-03-16 15 views
0

Rライブラリpurrrとdplyrの理解を深めるために、別のモデルとデータセットの分割を使用してHadley Wickhamで記述されている例を試しています。しかし、私は、複数の引数を使用するとき強制的なエラーに遭遇します。 purrrを使用してモデルを生成する強制エラー。

は、私が使って試してみて、私が間違っているつもりどこ突き止めるために、私のソフトウェアを単純化しています(リスト)オブジェクトが「整数」を入力する強制的することができません

:MAP2()とPMAPを()を使用して、次

library(dplyr) 
    library(purrr) 
    library(randomForest) 

    # generate a list of data frames (using the iris data set) 

    data_list <- lapply(1:10, FUN = function(x) iris) 

    # generate a list of parameters: 

    param_list <- as.list(seq.int(100,1000, by = 100)) 

    # - following works 

    models <- data_list %>% map(~randomForest(Species ~., data = .)) 

    # - following works 

    models <- seq_along(param_list) %>% 
       map(~randomForest(Species ~., data = data_list[[.]], 
              ntree = param_list[[.]])) 

    # - following has error: Error in randomForest.default(m, y, ...) : 
    #  (list) object cannot be coerced to type 'integer' 

    models <- map2(data_list, param_list, 
       ~randomForest(Species ~., data = ., ntree = .)) 

私はので、私はおそらく、任意の助けので感謝してリスト、データフレームなどで混乱しています数日間、この問題で苦労されています。あなたが[OK]をする必要があり

答えて

2

map2
models <- map2(data_list, param_list, 
       ~randomForest(Species ~., data = .x, ntree = .y)) 

、式のRHS上の匿名関数への暗黙の引数は.x.yです。

+0

私がmap2()で実装したソリューションをありがとう、それは動作します。他の関連する質問を申し訳ありませんが、3番目のリストを追加するとmtry_list < - list(2,2,2,2,2,3,3,3,3,3)を上記に置き、pmap()を使用します:models < - pmap(list(data_list、param_list、mtry_list) 、〜randomForest(Species〜。、data = .x、ntree = .y、mtry =。)) - なぜ「。第3引数として ".z"とは言わない? – David

+0

私は興味をそそられており、なぜこれが(私が私の側で確認した)働くのか分からない。私はこの問題をhttps://github.com/tidyverse/purrr/issues/203に見ましたが、疑わしい時には、通常の無名関数の構文を使用することをお勧めします。 –

+0

@Davidこれがあなたの質問に答えた場合、それを受け入れられたとマークしてください。 –

関連する問題