【发布时间】:2016-04-24 19:26:57
【问题描述】:
在这个主题的不同线程中搜索了帮助之后,我仍然没有变得更聪明。因此:关于循环多个数据文件的问题又来了……
好的。我在一个文件夹中有多个 CSV 文件,其中包含 5 列数据。文件名如下:
潮湿 yyyymmdd hh_mm_ss.csv
我想创建一个脚本,通过执行以下步骤逐一读取处理 CSV 文件:
1) 加载文件 2) 检查行数,如果少于 3 个注册则排除文件 3)计算第2列的所有测量值(=行)的平均值 4)计算第4列的所有测量值(=行)的平均值 5)将文件名时间戳,平均第2列和平均第4列输出到数据框,
我写了如下函数
moist.each.mean <- function() {
library("tcltk")
directory <- tk_choose.dir("","Choose folder for Humidity data files")
setwd(directory)
filelist <- list.files(path = directory)
filetitles <- regmatches(filelist, regexpr("[0-9].*[0-9]", filelist))
mdf <- data.frame(timestamp=character(), humidity=numeric(), temp=numeric())
for(i in 1:length(filelist)){
file.in[[i]] <- read.csv(filelist[i], header=F)
if (nrow(file.in[[i]]<3)){
print("discard")
} else {
newrow <- c(filetitles[[i]], round(mean(file.in[[i]]$V2),1), round(mean(file.in[[i]]$V4),1))
mdf <- rbind(mdf, newrow)
}
}
names(mdf) <- c("timestamp", "humidity", "temp")
}
但我不断收到错误:
Error in `[[<-.data.frame`(`*tmp*`, i, value = list(V1 = c(10519949L, :
replacement has 18 rows, data has 17
有什么想法吗?
谢谢,kruemelprinz
【问题讨论】:
-
file.in定义在哪里? -
不幸的是,我不知道如何定义它。到目前为止,我已经付出了很多努力...... file.in 是用于加载某个 csv 的临时对象,直到它被下一个处理的文件覆盖。