【问题标题】:Read Several Files in R - TAB Delimited Files读取 R 中的多个文件 - TAB 分隔文件
【发布时间】:2017-04-10 22:57:17
【问题描述】:

我想修改下面这段代码,它读取了几个 .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)

有什么帮助吗?谢谢,

里卡多。

【问题讨论】:

  • 尚未对其进行测试,但类似以下内容应该可以工作,因为 lapply 允许在 FUN 之后使用其他参数。 myfiles = lapply(temp, read_delim, delim="\t", escape_double = FALSE, trim_ws = TRUE)

标签: r csv readr


【解决方案1】:

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

版本 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_delim 读取数据后,您希望rbind 他们。您可以使用 purrr-package 中的 map_df 来简化它,如下所示:

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-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多