2017-03-06 8 views
0

データフレームオブジェクトを含む複数の.Rdsファイルがあります。各ファイルに関数を適用し、データフレームを単一のデータフレームにバインドしたいとします。しかし、私はファイル名のリストから複数の.Rdsファイルを読み込むしようとすると、私はエラーが表示されます。R:.Rdsファイル名のリストオブジェクトにreadRDSを適用する

Error in FUN(X[[i]], ...) : error reading from connection

readRDSは、リストでは動作しませんか?機能map_dfが何をしたいんpurrrパッケージで

######################## 
# Reproducible example 
######################## 

library(dplyr) 

# Create .Rds files 
saveRDS(data.frame(a = seq(1:3), b = rep("a",3)),"a.Rds") 
saveRDS(data.frame(a = seq(9:11), b = c("j","h","o")),"b.Rds") 

# Create list of file names to read 
rds <- list("a.Rds","b.Rds") 

# Read in .Rds files (error occurs here) 
temp <- lapply(rds, readRDS) 

# Converts file to single data frame 
final <- do.call(dplyr::bind_rows, temp) 
+0

これを「バインド」に変更しました – QuestionAnswer

+0

ファクタレベルのbind_rowsに関する警告を除き、そのまま動作します。 – Spacedman

+0

私はそれが適切であれば、dplyrの0.5.0にいる。 – Spacedman

答えて

1

map_dfは、個々の要素を行バインドすることによって単一のデータフレームを返します。

saveRDS(data.frame(a = 1:3, b = rep("a",3)),"a.Rds") 
saveRDS(data.frame(a =9:11, b = c("j","h","o")),"b.Rds") 

# Create list of file names to read 
rds <- c("a.Rds","b.Rds") 

library(purrr) 
purrr::map_df(rds, readRDS) 

この例では、編集したバージョンで小さなエラーが修正されています。

+0

これは私が望むものを生成しません...結果は data.frame(a = c(1,2,3,9,10,11)、b =( "a"、 "a"、 "a" "、" j "、" h "、" o "))。現在、data.frame(a = c(1,2,3,1,2,3)、b =( "a"、 "a"、 "a"、 "j"、 "h"、 "o" )) – QuestionAnswer

+0

私の問題は、あなたの例に根ざしていると思います。 'seq(9:11)'は1,2,3を返します。すべて正常に動作します – Wolfgang

+0

なぜ 'function(rds)readr :: read_rds(rds)'を使用していますか?普通の 'map_df(rds、readRDS) 'で動作します – Spacedman

関連する問題