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

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&lt;-as.data.frame(cooks.distance(ft1)) cooksD_outliers&lt;-cooksd[cooksd&gt;0.1,drop=FALSE,] result @ShichengGuo:你应该问一个新问题。

以上是关于如何将矩阵子集为一列,维护矩阵数据类型,维护行/列名称?的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何提取矩阵中的每一列作为新的变量

leetcode54——螺旋矩阵

leetcode54——螺旋矩阵

MATLAB中如何构造一个矩阵,该矩阵中每一列个数不等

一个行矩阵乘以一个列矩阵(一样大小)有啥物理或者几何意义?

如何计算两个矩阵的两两行距(欧氏距离)