2013-02-28 193 views
3

我有一个文件夹中的多个csv文件。每个csv文件都包含一个200行和200列的表格。我可以单独引入每个文件并将其显示为矩阵。我也可以做一个目录,并列出它们所在文件夹中的每个文件。我需要做的是引入每个文件,打开它们,然后将它们组合成一个数组。当我这样做时,虽然我得到了一个警告,说没有这样的文件。将文件导入到R数组中

我对这个代码是

x <- dir(path=" ", pattern = ".csv") 
num <- array(0,dim=c(200,200,length(x))) 
for(i in 1:length(x)){ 
    temp <- read.csv(x[i], skip=1) 
    temp2 <- temp[,2] 
    num[,i]<-temp2 

} 

这给了我警告

Error in file(file, "rt") : cannot open the connection 
In addition: Warning message: 
In file(file, "rt") : 
    cannot open file 'test_1.csv': No such file or directory 

同样,当我用单独的文件工作,我可以导入它们得很好,并列出他们,打开它们作为矩阵。为什么我得到这个警告?为什么R能够在我一次一个地找到我的文件,但一次不能找到多个?

+0

请看看你的'x'里有什么,它看起来并不像它捕获的文件。尝试'print(x)',看看它是否有预期的文件列表。如果没有,请看看你的'path =“”'参数 – 2013-02-28 20:19:10

+0

我没有在路径中放置任何东西,但是在我的实际代码中我有指定的路径。当我打印x所有文件列出。 – user2113499 2013-02-28 20:32:26

回答

2

首先,您确定您正在正确读取变量x中的文件列表。我认为你的for循环有一些问题。你也确定你和这些文件在同一个目录下吗?在dir命令中,输入" "代表path变量,我不确定这意味着什么。试试这个

> x <- dir(pattern = ".csv") 
> num <- array(0,dim=c(200,200,length(x))) # in my case `length(x)` is 9. 
> m <- matrix(rnorm(200*200),nrow=200,ncol=200) # generate some 200x200 matrix 
> for(i in 1:length(x)){ 
    num[,,i] <- m # notice its num[,,i] and not num[,i] 
} 
> num[1:4,1:4,9] 
      [,1]  [,2]  [,3]  [,4] 
[1,] -1.5674073 0.05364477 0.8367233 1.7995047 
[2,] -0.8613244 1.00400787 -0.2464169 -1.2897856 
[3,] -0.7907845 -1.40617992 1.0596680 -0.5270983 
[4,] -0.5206049 0.66253519 1.6820722 1.2017410