【发布时间】:2014-12-23 20:13:25
【问题描述】:
我在三个单独的文件夹中有许多 csv 文件,如下所示:
folder1
a1_0023.csv
a2_0034.csv
a3_6163.csv
...
(100 files)
folder2
b1_0023.csv
b2_0034.csv
b3_6163.csv
...
(100 files)
folder3
c1_0023.csv
c2_0034.csv
c3_6163.csv
...
(100 files)
我有一个列出最后四位数字的文本文件:
theLastFourDigits.txt
0023
0034
6163
...
(100 lines)
对于 0023 文件,我在 R 中做了一个简单的工作:
a <- read.table("D:/folder1/a1_0023.csv", header=FALSE, sep=",")
a <- as.matrix(a)
b <- read.table("D:/folder2/b1_0023.csv", header=FALSE, sep=",")
b <- as.matrix(b)
c <- read.table("D:/folder3/c1_0023.csv", header=FALSE, sep=",")
c <- as.matrix(c)
# Initiate the column vector that contains the results
myanswer <- matrix(0, nrow=100, ncol=1)
# Do a simple job, and store the result in myanswer column
myanswer[1] = nrow(a)*nrow(b)/nrow(c)
我在这里有两个问题:(1)我们如何迭代整个 100 位数字的这个过程? (2) 如果我没有theLastFourDigits.txt 列表文件,我们如何做多个工作?
编辑:
我尝试了类似以下的方法:
setwd("D:/folder1/")
filelist1 <- Sys.glob("*.csv")
setwd("D:/folder2/")
filelist2 <- Sys.glob("*.csv")
setwd("D:/folder3/")
filelist3 <- Sys.glob("*.csv")
for (i in 1:100) {
setwd("D:/folder1/")
a <- read.csv(filelist1[i], header=FALSE, sep=",")
a <- as.matrix(a)
setwd("D:/folder2/")
b <- read.csv(filelist2[i], header=FALSE, sep=",")
b <- as.matrix(b)
setwd("D:/folder3/")
c <- read.csv(filelist3[i], header=FALSE, sep=",")
c <- as.matrix(c)
nrow(a)*nrow(b)/nrow(c)
}
错误信息是这样的:
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
no lines available in input
3 stop("no lines available in input")
2 read.table(file = file, header = header, sep = sep, quote = quote,
dec = dec, fill = fill, comment.char = comment.char, ...)
1 read.csv(filelist1[i], header = FALSE, sep = ",")
我在这里错过了什么?
【问题讨论】: