2017-04-10 74 views
1

我想修改一段代碼,它讀取幾個.csv(逗號分隔值)文件,以通知它文件是製表符分隔的,即。 tsv文件。在R - TAB分隔文件中讀取幾個文件

temp = list.files(pattern="*.csv") 
myfiles = lapply(temp, read.delim) 

對於單個文件,我沒有(使用readr包):

data_1 <- readr::read_delim("dataset_1.csv", "\t", escape_double = FALSE, trim_ws = TRUE) 

任何幫助嗎?謝謝,

裏卡多。

+1

沒有測試過,但像下面應該工作,因爲FUN後lapply允許額外的參數。 'myfiles = lapply(temp,read_delim,delim =「\ t」,escape_double = FALSE,trim_ws = TRUE)' – epi99

回答

2

我猜你正在尋找的是以下幾點:

版本1:用戶定義的函數

my_read_delim <- function(path){ 
    readr::read_delim(path, "\t", escape_double = FALSE, trim_ws = TRUE) 
} 
lapply(temp, my_read_delim) 

版本2:使用的lapply
lapply...說法有作爲第三個參數...這表示將第二個參數傳遞給指定爲第二個參數的函數後的參數:

lapply(temp, readr::read_delim, delim = "\t", escape_double = FALSE, trim_ws = TRUE) 

版本二是基本相同的一個版本,但更緊湊


假設所有文件都具有相同的列:

在大多數應用中讀取數據後,通過read_delimrbind他們。您可以使用map_dfpurrr -package簡化這一如下:

require(purrr) 
require(readr) 
# or require(tidyverse) 

temp <- list.files(pattern="*.csv") 
map_df(temp, read_delim, delim = "\t", escape_double = FALSE, trim_ws = TRUE) 
+0

太棒了!完美的作品。謝謝! –