繁体   English   中英

读取多个csv文件

[英]Reading multiple csv files

我需要读取多个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)

如果您只想打印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:

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,您不需要初始化一个空列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM