【问题标题】:subsetting 1-column matrix deletes rownames [duplicate]子集1列矩阵删除行名[重复]
【发布时间】:2015-04-02 09:26:57
【问题描述】:

当我尝试通过行名对 1 列矩阵进行子集化时,子集化有效,但返回了一个数字向量。

你能以某种方式阻止这种行为并保留行名吗?

M<-as.matrix(rnorm(5))
rownames(M)<-LETTERS[1:5]
M
        [,1]
A  0.6250957
B  0.7330598
C -0.7127075
D  0.2162602
E  0.2223444

M <- M[which(rownames(M) != "A")]

M
## [1]  0.7330598 -0.7127075  0.2162602  0.2223444

【问题讨论】:

  • 您必须添加 drop=FALSE,因为您的矩阵是一列。 M[which(rownames(M) != "A"),,drop=FALSE]

标签: r matrix subset


【解决方案1】:

您可以在帮助页面中阅读有关参数drop 的信息:?'['

M[which(rownames(M) != "A"), ,drop=FALSE]

【讨论】:

  • 哦,好吧,我不知道你可以在方括号内使用 drop=FALSE。我看到了 Henrik 提到的问题,但我没有看到如何将 drop 参数添加到子集,这就是我问一个新问题的原因。感谢你及时的答复!还有一件事:我在 vegdist() 中使用 na.rm=TRUE 的矩阵,它在内部似乎将其转换回向量(同时删除 NA),然后抱怨它是一个向量。对此有什么想法吗?
  • 好的,抱歉刚刚又看到另一个问题,是的,我原来的问题是完全重复的,抱歉。对vegdist有什么想法吗?这是 vegan 包中的一个距离函数,但我猜其他具有 na.rm 参数的函数可能会出现相同的行为......
  • @user1183277 查看vegdist的代码。我也可以为你做,但有什么意义呢?
猜你喜欢
  • 2017-01-09
  • 2020-01-25
  • 2021-10-05
  • 2013-03-03
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 2020-07-14
  • 2011-10-13
相关资源
最近更新 更多