首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除与R中列名匹配的矩阵中的列

删除与R中列名匹配的矩阵中的列
EN

Stack Overflow用户
提问于 2014-11-24 22:46:58
回答 2查看 219关注 0票数 0

我在R脚本中有一个矩阵,我想删除R中与标签匹配的矩阵中的列。

例如:

代码语言:javascript
复制
A <- matrix(c(4,5,4,4), nrow=1)
dimnames(A)= list(c("row1"),c("foo","bar","alfa","foo"))

     foo bar alfa foo
row1   4   5    4   4

我希望删除foo-4列,因为它与标签匹配,而不是列alfa-4。

我试着

代码语言:javascript
复制
duplicated.columns <- duplicated(t(A))
A <- A[, !duplicated.columns]

但结果是

代码语言:javascript
复制
foo bar 
  4   5 

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-24 22:57:09

尝试以下几点:

代码语言:javascript
复制
A[,!duplicated(colnames(A))]
票数 1
EN

Stack Overflow用户

发布于 2014-11-25 04:20:30

我想补充的是,当前的两个答案都会将矩阵降到指定的向量。

代码语言:javascript
复制
class(A[, unique(colnames(A))])
# [1] "numeric"
class(A[, !duplicated(colnames(A))])
# [1] "numeric"

若要使A在删除重复列后保持矩阵,可以使用drop = FALSE

代码语言:javascript
复制
class(A[, unique(colnames(A)), drop = FALSE])
# [1] "matrix"
class(A[, !duplicated(colnames(A)), drop = FALSE])
# [1] "matrix"

我之所以提到这一点,是因为如果在函数中使用子集,这可能很重要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27115609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档