如何将矩阵子集为一列,维护矩阵数据类型,维护行/列名称?
Posted
技术标签:
【中文标题】如何将矩阵子集为一列,维护矩阵数据类型,维护行/列名称?【英文标题】:How to subset matrix to one column, maintain matrix data type, maintain row/column names? 【发布时间】:2011-11-13 05:08:23 【问题描述】:当我将矩阵子集到单列时,结果是数字类,而不是矩阵(即 myMatrix[ , 5 ] 到第五列的子集)。是否有一种紧凑的方法可以将子集设置为单个列、维护矩阵格式并维护行/列名称,而无需执行复杂的操作,例如:
matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )
【问题讨论】:
【参考方案1】:对[
使用drop=FALSE
参数。
m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1] # vector
m[,1,drop=FALSE] # matrix
【讨论】:
我发誓我最近才看到这个,但它可能是受到质疑的类似数据帧行为:***.com/questions/6941985/… 如果只想按第一个维度进行索引,可以使用drop如下:m[1,,drop=FALSE]
以统计为基础举个例子,使用 Cooks 的 D 距离,然后根据截止值选择值,例如0.1,这将导致 cooksD 值及其在相关数据集中的相应行数cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
result
@ShichengGuo:你应该问一个新问题。以上是关于如何将矩阵子集为一列,维护矩阵数据类型,维护行/列名称?的主要内容,如果未能解决你的问题,请参考以下文章