匯入多個csv檔:使用grid.expand搭配reduce和map

有時我們會需要讀入多個不同編碼或是代號儲存的,最麻煩的是如何產生這些檔案路徑的各種組合,此時便可以使用expand.grid函數,這函數可以產生各種組合的data.frame,然後使用do.call或是reduce,來將這些組合合併成路徑,另外,cross_n函數等,跟傳統expand.grid的功能是差不多,有興趣可以查一下他的函數介紹。

#method 1: with all dplyr tool
expand.grid(c("DNA_","RNA_"),c("sample-1","sample-2","sample-3"),c(".csv") %>% as.list %>% reduce(paste) %>% map(read_csv) %>% reduce(rbind)

#method 2: with do.call
expand.grid(c("DNA_","RNA_"),c("sample-1","sample-2","sample-3"),c(".csv")  %>% do.call(paste) %>% map(read_csv) %>% reduce(rbind)

其實這問題的解決方法有蠻多的,下面的討論串分別是用不同的概念和想法去實現的,而使用reduce和map這兩個的方式算是比較簡單,且可以輕易的串在分析流程的方式。
 

相關閱讀參考:
R – concatenate row-wise across specific columns of dataframe
concatenating rows of a data frame
How do I concatenate a vector of strings/character in R?
Finding all possible combinations of a three strings

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s