2013-02-28 9 views
3

하나의 폴더 내에 여러 개의 csv 파일이 있습니다. 각 csv 파일에는 200 개의 행과 200 개의 열이 포함되어 있습니다. 각 파일을 개별적으로 가져 와서 매트릭스로 표시 할 수 있습니다. dir을 사용하여 폴더가있는 각 파일을 나열 할 수도 있습니다. 내가해야 할 일은 각 파일을 가져 와서 열어서 배열로 결합하는 것입니다. 이런 파일이 없다는 경고를 받지만이 작업을 수행 할 때.배열로 파일 가져 오기 R

이 내 코드는이 내가 개별 파일 함께 일하고 때 내가하고 잘 가져 오기 및 해당 목록을 나열하고이를 열 수

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 

다시 나에게 경고를 제공

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 

} 

입니다 행렬로. 왜 내가이 경고를받는거야? R은 한 번에 하나씩 할 때 파일을 찾을 수 있지만 한 번에 여러 파일을 찾을 수없는 이유는 무엇입니까?

+0

'x'에 무엇이 있는지 살펴보십시오. 파일을 캡처 한 것처럼 보이지 않습니다. 'print (x)'를 시도해보고 예상 파일 목록이 있는지 확인하십시오. 그렇지 않다면, 당신의'path = ""인수를 보아주세요. –

+0

나는 여기에 아무 것도 넣지 않았지만, 실제 코드에는 지정된 경로가 있습니다. x를 인쇄하면 모든 파일이 나열됩니다. – user2113499

답변

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