有時我們會需要讀入多個不同編碼或是代號儲存的,最麻煩的是如何產生這些檔案路徑的各種組合,此時便可以使用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