1

我想修改下面的一段代码,它读取了几个 .csv(逗号分隔值)文件,以通知它这些文件是制表符分隔的,即 .tsv 文件。

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)

有什么帮助吗?谢谢,

里卡多。

4

1 回答 1

2

我想你正在寻找的是以下内容:

版本 1:用户定义函数

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

版本 2:使用 has 的...参数lapply
lapply作为第三个参数...,这意味着第二个之后的参数被传递给指定为第二个参数的函数:

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

第二版与第一版基本相同,但更紧凑


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

在大多数应用程序中,通过read_delim您想要的方式读取数据后rbind。您可以使用map_df-packagepurrr来简化它,如下所示:

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)
于 2017-04-10T23:13:58.793 回答