2014-04-28 19 views
0

我有很多文件在里面的目录。我正在尝试读取所有文件并选择每个文件的第二列,并使用rbind创建矩阵。但问题是,在创建矩阵后,其中没有列名和行名称。 基本上行名应该是我读的文件名和rbind它是第二列。 colnames应该是文件之一的第一列。当你从一个目录中读取一堆文件到R中时,如何设置colnames和rownames?

这里是我的努力:

nm <- list.files(path="path/to/file") 
MyMatrix<-do.call(rbind, lapply(nm, function(x) read.table(file=x)[, 2])) 
+1

你有没有试过将行名设置为你想要的? 'row.names(MyMatrix)< - nm' ... – Justin

回答

1

一个假数据设置(例如,您的所有文件都在testdir目录)需要

my.data <- Indometh 
write.csv(my.data, file = "testdir/test1.csv", row.names = FALSE) 
my.data$time <- my.data$time + 1 
write.csv(my.data, file = "testdir/test2.csv", row.names = FALSE) 
my.data$time <- my.data$time + 1 
write.csv(my.data, file = "testdir/test3.csv", row.names = FALSE) 

到你的周期那么一些变化

nm <- list.files(path="testdir") 
my.file <- paste("testdir", nm, sep="/") 
MyDataFrame<-do.call(cbind, lapply(my.file, function(x) { 
    col2name <- gsub("\\..+$","", basename(x)) 
    my.col <- data.frame(read.csv(file=x)[, 2]) 
    names(my.col) <- col2name 
    my.col 

})) 

MyDataFrame 

在这里完成与read.csv,适应您的需求:)

HTH,Luca

相关问题