-1

すべての .csv ファイルを (1 つのディレクトリから) 読み取り、すべての列を文字列として読み込んでから、それらを 1 つのデータ フレームにバインドするために、lapply を適切に構築するにはどうすればよいでしょうか。

thisごとに、すべての .csv ファイルをロードしてデータフレームにバインドする方法があります。残念ながら、彼らは、列がどのように型キャストされるかの変動性に悩まされています。したがって、このエラーが表示されます:

エラー: 列の文字から整数に自動的に変換できません

データ型の引数でコードを補足しようとしましたが、すべてを文字として保持しようとしています。「ループ」の各サイクルのサブジェクトを効果的に参照するために、ラップリー「ループ」を適切に取得できるようになりました。

srvy1 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = 5L), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                             "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                  -1L))

srvy2 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = "bovine"), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                                   "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                        -1L))    

files = list.files(pattern="*.csv")
tbl = lapply(files, read_csv(files, col_types = cols(.default = col_character()))) %>% bind_rows

私がtidyverseに保つことができるこれに対する簡単な修正はありますか、それともレベルを下げて、自分で for ループを公然と構築する必要があります - this .

4

1 に答える 1

8

はに渡される引数lapplyの形式lapply(x, FUN, ...)である必要があります。FUN内に引数を入力しています。そのはず...FUNlapply(files, read_csv, col_types = cols(.default = "c"))

あなたがtidyverse解決策が好きなら:

files %>%
  map_df(~read_csv(.x, col_types = cols(.default = "c")))

最後にすべてをデータフレームにバインドします。

于 2016-11-16T19:32:29.233 に答える