You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中去除重复元素组合后如何返回单行矩阵?原因是什么?

问题解答:矩阵去重后保留单行矩阵结构

为什么返回向量而非矩阵?

R中使用[对矩阵进行行索引时,默认启用drop=TRUE参数。当索引结果仅包含一行时,该参数会自动将矩阵降维为向量,以此简化后续的数值计算;只有当索引结果包含多行时,才会保持原有的矩阵结构。这就是你遇到单行结果变向量、多行结果仍为矩阵的原因。

如何获取仅含一行的矩阵?

有两种简单的解决方式:

方法1:索引时添加drop=FALSE参数

在索引操作中显式设置drop=FALSE,强制R保留矩阵的维度结构:

m <- cbind(c("A", "B"), c("B", "A"))
# 添加drop=FALSE
m[!duplicated(t(apply(m, 1, sort))), , drop = FALSE]

执行后会得到预期的单行矩阵:

[,1] [,2]
[1,] "A"  "B" 

方法2:手动构造矩阵

如果已经得到了降维后的向量,可以用matrix()函数指定行数和列数,将其转换为单行矩阵:

m <- cbind(c("A", "B"), c("B", "A"))
result_vec <- m[!duplicated(t(apply(m, 1, sort))), ]
# 指定nrow=1,ncol=2构造矩阵
matrix(result_vec, nrow = 1, ncol = 2)

该方法同样能输出符合要求的单行矩阵。

内容的提问来源于stack exchange,提问作者SchlaWiener

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:36:00