如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?


84

当我将矩阵子集分配到单个列时,结果是数字类而不是矩阵类(即,将myMatrix [,5]子集分配到第五列)。是否有一种紧凑的方法可以将子集划分为单个列,维护矩阵格式以及维护行/列名称,而无需执行类似以下的复杂操作:

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )

Answers:


122

drop=FALSE参数用于[

m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1]             # vector
m[,1,drop=FALSE]  # matrix

我会发誓我看到这只是最近,但它可能已被认为受到了质疑类似的数据帧的行为:stackoverflow.com/questions/6941985/...
IRTFM

5
如果您只想按第一个维度编制索引,则可以按以下方式使用drop:m[1,,drop=FALSE]
Kevin Bullaughey 2014年

以统计为例,使用Cooks的D距离,然后基于截止值(例如0.1)选择值,将得出CooksD值及其在相对数据集中的相应行数 cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
Elias EstatisticsEU

result <-apply(temp,1,function(x)tapply(x,genesymbol,function(x)mean(x,na.rm = T)))如何处理结果是数组的问题,但实际上,我希望它成为一列数据框吗?谢谢
Shicheng Guo

@ShichengGuo:您应该问一个新问题。
约书亚·乌尔里希
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.