将多个数据帧中的行名称转换为数据框中的列

时间:2013-08-23 12:42:47

标签: r dataframe rowname

我有一个.csv文件列表,我已经读入R并放在一个名为data的大型数据框中,该数据框由6个data.frames组成,这些是{{1}中的6个文件}}。到目前为止我的代码是:

filenames

每个data.frame中的行名和列名完全相同,我想提取行名,而是将它们作为R中的第一列。我的一个数据框的示例就像这样:

filenames <- list.files( paste(mainDirInput,sep=""), pattern="Out.*csv", full.names=TRUE) 
data = lapply(filenames, function(f) {
wb = read.csv(f, header=TRUE)
})

我也需要能够在其他文件上使用此代码,因此我不能简单地创建一个值为 w x y z 2012 01 12 43 87 09 2012 02 14 53 75 76 2012 03 76 34 76 28 2012 04 41 36 85 16 : : : : : : : : : : 的新列

1 个答案:

答案 0 :(得分:31)

你有一个名为“w,x,y,z”的列dataframe。只是做

data$names <- rownames(data) 

添加新列。

修改

在回应Boogie的查询时,这里的lapply带有一个匿名函数来执行循环。

   foo = as.data.frame(matrix(1:15,3,5))
    rownames(foo) <-c('frist','prime','lastly')
    foo
    bar = list(foo,t(foo), rbind(foo,foo))
    bar[[1]] = as.data.frame( foo)
    bar[[2]] =data.frame( t(foo))
    bar[[3]] = data.frame(rbind(foo,foo))
    bar
    bar = lapply(bar,FUN= function(x) { x$date <-rownames(x);return(x)})
    bar