【发布时间】:2019-06-19 15:49:47
【问题描述】:
我尝试合并来自 HOBOware 数据记录器的数据,我们每个月左右都会收集数据并一直在 Excel 中编译它们。我正在尝试获取原始 CSV 文件并在 R 中处理它们。我正在努力在循环中正确格式化 CSV
我可以通过
单独格式化每个月Pool_xxx <- read_csv("Pool_xxx.csv",
col_types = cols(`Date Time, GMT-05:00` = col_datetime(format = "%m/%d/%y %H:%M:%S")),
skip = 1)[,2:4]
但我想创建一个循环来执行文件夹中的每个 CSV
我已经阅读了很多关于如何循环的帖子,但我不知道在哪里放置列规范
setwd("E:/R Hobo/Conversion test/Converted HOBO files")
mydir = "Pool 6"
myfiles = list.files(path=mydir, pattern="*.csv", full.names=TRUE)
numfiles <- length(myfiles)
for (numfiles in myfiles) {
sample <- read.csv(numfiles,
header = FALSE,
sep = ",",
col_types = cols(`Date Time, GMT-05:00` = col_datetime(format = "%m/%d/%y %H:%M:%S")),
skip = 1) [,2:4]
}
我不断收到这个,但我不知道该去哪里
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
unused argument (col_types = cols(`Date Time, GMT-05:00` = col_datetime(format = "%m/%d/%y %H:%M:%S")))
有人建议 lapply 但 R 一直说它与 3.5.3 版本不兼容
原始 CSV 链接:https://drive.google.com/file/d/1SUf--PNznlNOlDkXeXYaRKuSHqa-EVZM/view?usp=sharing
【问题讨论】:
-
在您的第一个块中,您使用来自
readr包的read_csv。在您的循环中,您使用来自 base R 的read.csv。将点更改为下划线。 -
另外,循环的设置方式,
sample每次迭代都会被覆盖。相反,将数据放入list。在循环之前,初始化sample <- list()。然后,在循环中,使用sample[numfiles] <- read_csv... -
另一个注意事项,您使用了两次
numfiles。您首先将其定义为带有numfiles <- length(myfiles)的整数,第二次将其定义为带有文件名的字符串。