如何将矩阵提取为一个列,保持矩阵数据类型,同时保留行/列名称?

104

当我将矩阵子集化为单列时,结果的类别是数字而不是矩阵(例如myMatrix[ , 5]来对第五列进行子集化)。是否有一种简洁的方法可以子集化为单列,同时保持矩阵格式并保留行/列名称,而不必像做某些复杂的事情一样:

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )
1个回答

146

使用drop=FALSE参数来调用[

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

5
若您只想按第一维进行索引,可以使用如下方式:m[1,,drop=FALSE],其中 drop 参数为保留维度的标志。 - Kevin Bullaughey
举个统计学的例子,使用Cook's D距离,然后根据截断值(例如0.1)选择值,将导致具有相应数据集中行数的cooksD值。cooksd <- as.data.frame(cooks.distance(ft1)) cooksD_outliers <- cooksd[cooksd>0.1,drop=FALSE,] - Estatistics
结果<-apply(temp,1,function(x) tapply(x, genesymbol,function(x) mean(x,na.rm=T))) 如何处理结果是一个数组的问题,但实际上我想要它成为一个单列数据框?谢谢。 - Shicheng Guo
@ShichengGuo:你应该提出一个新问题。 - Joshua Ulrich
1
@irritable_phd_syndrom 使用 help("[")?"["。您需要引用任何不是“语法”的名称(有关详细信息,请参见 ?Quotes?Syntax)。 - Joshua Ulrich
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接