如何为矩阵或数据框列表设置行名?

时间:2014-05-27 15:40:35

标签: r

我有列表,它包含每个元素中的数据框。我想将evey数据框的一列设置为行的名称。但是当我这样做时,我失去了数据的维度。

以下是我的数据和我的努力的例子:

> ismr2[[1]][1:4,]
  mature           ID        RPM
1 mature MIMAT0000062 49791.5560
2 mature MIMAT0000063 92858.1285
3 mature MIMAT0000064 10418.8532
4 mature MIMAT0000065   404.7618
> 

我的努力;

ismr3<-lapply(ismr2, function(x){ row.names(x)<-as.character(x$ID) })


> dim(ismr3[[1]])
NULL
> 

row.name操作之前列表的第一个元素的维度是:

> dim(ismr2[[1]])
[1] 447   3
有人会帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我在这里添加了@Roland的答案,所以问题就出现了答案。

ismr3 <- lapply(ismr2, function(x){ row.names(x)<-as.character(x$ID); x})

重要的是lapply里面的函数实际上返回要添加到列表中的值。仅使用row.names<-赋值,从中返回的值就是行名称本身。因此,因为每个赋值都返回一个字符向量,所以您没有创建具有dim()属性的对象。 (原子载体有length,而不是dim)。