[英]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
动态分配名称,以便每个名称都是唯一的,并且不会相互覆盖,我想这就是您的目标。 虽然这不是很“优雅”,但适合您选择的方法
如果要将数据帧保留在列表中,而不是将每个数据帧分配给一个新对象。
fs <- dir(pattern = ".csv")
d <- list()
for (i in seq_along(fs)) {
d[[i]] <- read.csv(fs[[1]])
print(head(d[[i]]))
}
fs <- dir(pattern = ".csv")
d <- lapply(fs, read.csv)
lapply(d, head)
使用选项1,您需要初始化一个空列表以填充并使用双括号[[
表示法。 使用选项2,您不需要初始化一个空列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.