11

我有一个.csv文件列表,我已读入 R 并放置在一个名为的大型数据框中,该数据框data由 6 个 data.frames 组成,它们是filenames. 到目前为止,我的代码是:

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

每个 data.frame 中的行名和列名完全相同,我想提取行名并将它们作为 R 中的第一列。我的一个数据框的示例如下所示:

            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
  :         :    :    :    :
  :         :    :    :    :

我还需要能够在其他文件上使用此代码,所以我不能简单地创建一个包含值的新列2012 01, 2012 02, 2012 03...

4

1 回答 1

33

你有一个dataframe名为 "w,x,y,z" 的列。做就是了

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
于 2013-08-23T12:54:56.207 回答