2011-10-20 11 views
1

私はインポートして扱いたいn個のファイルfile_1、file_2、...、file_nを持っています。だから私はこのようなファイルをインポートする複数のファイルをインポートしてそれらのインデックスを作成する

files <- list.files(pattern=".txt$") 
for(i in files) { 
    x <- read.table(i, header=TRUE, comment.char = "A", sep="\t") 
    assign(i, x) 
} 

ポイントは、私が別のファイルから同時にデータを使いたいということです。たとえば、私は、各ファイルの最初の列の意味ベクトルを計算したい:

meanv = mean(file_1$firstcolumn, file_2$firstcolumn, ..., file_n$firstcolumn). 

これを行うための最も論理的な方法は、すべてのファイル(file_1file_2、...、file_nを通過するループを記述で)。この場合、ファイルのインデックスを作成する必要があります。これには何か解決策はありますか?または、他の解決策がありますか?

答えて

1

リストだけを使用します。ここでは

##Generate some test data 
R> dd1 = data.frame(V1 = rnorm(10), V2 = rnorm(10)) 
R> dd2 = data.frame(V1 = rnorm(10), V2 = rnorm(10)) 
#Create an empty list 
R> l = list() 
##In your example, you would have something like: 
##l[[i]] = read.table(....) 
R> l[[1]] = dd1; l[[2]] = dd2 

##Now use lapply to calculate the column means for each data frame 
R> lapply(l, colMeans) 
[[1]] 
    V1  V2 
-0.6805 -0.0767 

[[2]] 
     V1  V2 
0.253563 0.006207 
+0

か、元のループの中で環境に割り当てると 'eapply'を使用しています。 – James

0

はアプローチ

# list files with .txt extension 
files <- list.files(pattern = '\\.txt$') 

# read files into a list of tables 
tables <- lapply(files, read.table, header = TRUE, comment = 'A', sep = '\t') 

# compute mean of first column 
meanv <- lapply(tables, colMeans) 
関連する問題