我有列表,它包含每个元素中的数据框。我想将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
有人会帮我解决这个问题吗?
答案 0 :(得分:3)
我在这里添加了@Roland的答案,所以问题就出现了答案。
ismr3 <- lapply(ismr2, function(x){ row.names(x)<-as.character(x$ID); x})
重要的是lapply里面的函数实际上返回要添加到列表中的值。仅使用row.names<-
赋值,从中返回的值就是行名称本身。因此,因为每个赋值都返回一个字符向量,所以您没有创建具有dim()
属性的对象。 (原子载体有length
,而不是dim
)。