2014-12-09 2 views
0

하나의 폴더에 여러 개의 csv 파일이 있습니다. 이 폴더의 각 CSV 파일을 하나의 개별 데이터 프레임으로로드하려고합니다. 다음으로,이 데이터 프레임의 특정 요소를 행렬로 추출하여 모든 행렬의 평균을 계산하려고합니다. 폴더에 11 CSV-파일이있는 것처럼r for 루프에서 변수를 만들고 주소 지정

setwd("D:\\data") 
group_1<-list.files() 
a<-length(group_1) 

mferg_mean<-data.frame 

for(i in 1:a) 
{ 
assign(paste0("mferg_",i),read.csv(group_1[i],header=FALSE,sep=";",quote="",dec=",",col.names=1:90)) 
} 

지금은 데이터가

나는이 루프에서 각 데이터 프레임을 해결할 수있는 방법
mferg_11 

mferg_1 

프레임이? 앞서 언급 한 것처럼 각 데이터 프레임에서 특정 요소를 매트릭스로 추출하려고합니다. 나는 이것을 다음과 같이 상상할 것입니다 :

assign(paste0("mferg_matrix_",i),mferg_i[1:5,1:10]) 

그러나 R은 mferg_i를 루프에서 인식하지 못하기 때문에 분명히 작동하지 않습니다. 이 데이터 프레임을 어떻게 처리 할 수 ​​있습니까?

답변

2

처음에는 assign을 사용해야합니다. R에있는 다양한 data.frames로 작업하는 것은 엉망이지만, data.frames의 목록으로 작업하는 것이 훨씬 쉽습니다.

group_1<-list.files() 
mferg <- lapply(group_1, function(filename) { 
    read.csv(filename,header=FALSE,sep=";",quote="",dec=",",col.names=1:90)) 
}) 

하여 데이터를 읽고 시도하고 당신은 등 mferg[[1]], mferg[[1]], 각 각 값을 얻을 그리고 당신은

mferg_matrix <- lapply(mferg, function(x) x[1:5, 1:10]) 

이 더 많은 R-같은 방법으로 추출의 목록을 만들 수 있습니다 일을하는 것.

그러나 기술적으로 get을 사용하여 assign을 사용하는 것과 같은 값을 검색 할 수 있습니다. 예를 들어,

assign(paste0("mferg_matrix_",i),get(paste0("mferg_",i))[1:5,1:10]) 

그러나 다시 이것은 장기적으로 현명한 전략은 아닙니다.

+0

믿을 수 없지만 작동하지만 이해가 안됩니다! 고맙습니다! 나는 너의 그 몇 줄을 해독하는 밤을 보내야 해! – curbholes

관련 문제