读取多个csv文件

时间:2019-08-03 07:19:49

标签: r

我需要读取多个csv文件并为每个文件打印前六个值。我尝试了这段代码,但是显然是错误的,因为在循环的每次迭代中di的值都会被覆盖。如何读取多个文件?

library(xlsx)
for(i in 1:7){
    di = read.csv(file.choose(),header=T)
    print(di)
}
d = list(d1,d2,d3,d4,d5,d6,d7)
lapply(d,head)

2 个答案:

答案 0 :(得分:0)

如果只想打印6行或存储它们,以及是否要保留其余的csv文件,我会有些困惑。假设您只需要打印6行,然后假设您知道文件名,就可以使用

print(read.csv(filename, nlines = 6))

并为每个文件重复。另外,如果您要保存每个文件,则可以

f1 <- read.csv(filename, nlines = 6)

对每个重复一次,并使用print(head)

或者使用您的方法,但解决覆盖问题:

library(xlsx)
for(i in 1:7)
  assign(paste0("d",i), read.csv(file.choose(),header=T))

  lapply(list(d1,d2,d3,d4,d5,d6,d7),head)

使用assign动态分配名称,以便每个名称都是唯一的并且不会互相覆盖,我认为这正是您的目标。虽然这不是很“优雅”,但适合您选择的方法

答案 1 :(得分:0)

如果您想将数据帧保留在列表中,而不是将每个数据帧分配给一个新对象。

选项1:

fs <- dir(pattern = ".csv")
d <- list()
for (i in seq_along(fs)) {
    d[[i]] <- read.csv(fs[[1]])
    print(head(d[[i]]))
    }

选项2:

fs <- dir(pattern = ".csv")
d <- lapply(fs, read.csv)
lapply(d, head)

使用选项1,您需要初始化一个空列表以使用双括号[[表示法填充和分配。使用选项2,您不需要初始化一个空列表。