2016-08-24 15 views
1

同じコマンドをx回繰り返してみたい、という単純な例は、同じ名前で年を10回変えて読むことです。x回同じコマンドを繰り返します。

yr2001detail<-read.csv("E:/yr2001detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2002detail<-read.csv("E:/yr2002detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2003detail<-read.csv("E:/yr2003detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2004detail<-read.csv("E:/yr2004detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2005detail<-read.csv("E:/yr2005detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2006detail<-read.csv("E:/yr2006detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2007detail<-read.csv("E:/yr2007detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2008detail<-read.csv("E:/yr2008detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2009detail<-read.csv("E:/yr2009detail.csv",stringsAsFactors = FALSE,header=TRUE) 
yr2010detail<-read.csv("E:/yr2010detail.csv",stringsAsFactors = FALSE,header=TRUE) 

私は自分自身を繰り返しているので、また、あまりにも多くのファイルがある場合や、何度も何度も繰り返さなければならない場合には、本当に時間がかかります。ため、私は左側の仕事をdidntの

for(i in 1:10){ 
paste("yr",2000+i,"detail",sep="")<-read.csv(paste("E:/yr",2000+i,"detail.csv",sep=""),stringsAsFactors = FALSE,header=TRUE) 
} 

をやっ模索しようとしている、とも私は、さらなるダウンの道に沿って求めています。この

vector <- rep(NA,10) 
for(i in 1:10){ 
vector[i] <- paste("yr",2000+i,"detail",sep="") 
} 
for(i in 1:10){ 
vector[i]<-read.csv(paste("E:/yr",2000+i,"detail.csv",sep=""),stringsAsFactors = FALSE,header=TRUE) 
} 

は、私は私のデータに対処する必要があります毎年、より多くの繰り返しコマンドを割り当てることを意味します。

答えて

4

私たちは、「ファイル」と「ファイル名」

files <- sprintf("E:/yr%ddetail.csv", 2001:2010) 
filenames <- sprintf("yr%ddetail", 2001:2010) 

あるいはpaste

files <- paste0("E:/", 2001:2010, "detail.csv") 
filenames <- paste0("yr", 2001:2010, "detail") 

を使用し、それを読むためにファイルをループすることができます作成​​にsprintfを使用することができます。私たちは別々のオブジェクトが必要な場合は、しかし、すなわち、むしろ地球環境に多くのオブジェクトを持つよりも、listでそれを読むために

lst <- setNames(lapply(files, read.csv, stringsAsFactors=FALSE, header=TRUE), filenames) 

またはそれ以上である、assign

for(j in seq_along(filenames)){ 
    assign(filenames[j], read.csv(files[j], stringsAsFactors=FALSE, header=TRUE)) 
} 

を使用より高速なオプションfread

library(data.table) 
lst <- setNames(lapply(files, fread), filenames) 

listでは、データセットを1つにまとめてrbindとすることができ、どのファイルから来たのかを示す 'id'カラムがあります。これは、いくつかの操作で役立ちます。あなたのコメントのための

dt <- rbindlist(lst, idcol="Grp") 
+1

おかげで、ソリューションの最初の部分は、私はリストと比較して、それはクラッタgobal環境が、私は今のオブジェクトにクリックするオプションを希望にもかかわらず、探していたものです。サブセットコメントを10回使用する代わりに、すべてのデータを一度にサブセット化するなど、他の機能を使用することができます。 – Donkeykongy

関連する問題