我想知道是否有R语法可以从矩阵中提取一列并始终在返回的向量上没有名称属性(我希望依赖这种行为)。
我的问题是以下不一致性:
- 当矩阵具有多行且我执行myMatrix [,1]时,我将获得myMatrix的第一列,其没有名称属性。这就是我想要的。 - 当矩阵恰好有一个行时,我执行myMatrix [,1],我将获得myMatrix的第一列,但它具有第一个colname作为其名称。
我希望能够执行myMatrix [,1]并始终获得无名称的内容。
下面是一个示例:
现在,
通过矩阵索引获得的向量将没有名称,除非‘x’是一维的,此时行名称(如果有)将被索引以为结果提供名称。 我的问题是,是否有一种方法可以执行
我的唯一希望是使用
我的问题是以下不一致性:
- 当矩阵具有多行且我执行myMatrix [,1]时,我将获得myMatrix的第一列,其没有名称属性。这就是我想要的。 - 当矩阵恰好有一个行时,我执行myMatrix [,1],我将获得myMatrix的第一列,但它具有第一个colname作为其名称。
我希望能够执行myMatrix [,1]并始终获得无名称的内容。
下面是一个示例:
# make a matrix with more than one row,
x <- matrix(1:2, nrow=2)
colnames(x) <- 'foo'
# foo
# [1,] 1
# [2,] 2
# extract first column. Note no 'foo' name is attached.
x[, 1]
# [1] 1 2
# now suppose x has just one row (and is a matrix)
x <- x[1, , drop=F]
# extract first column
x[, 1]
# foo # <-- we keep the name!!
# 1
现在,
[
(?'['
) 的文档提到了这种行为,所以这不是一个错误或者其他什么(尽管,为什么?!为什么这个不一致性?!):通过矩阵索引获得的向量将没有名称,除非‘x’是一维的,此时行名称(如果有)将被索引以为结果提供名称。 我的问题是,是否有一种方法可以执行
x[, 1]
,使结果总是未命名,其中x
是一个矩阵?我的唯一希望是使用
unname(x[, 1])
,还是有类似于[
的drop
参数的东西?还是有一个我可以设置的选项来表示“总是未命名”?我可以使用的一些技巧(某种方式覆盖[
的行为,当提取的结果是一个向量时?)
as.vector(x[,1])
来实现。 - agstudy"dimnames<-"(x,NULL)[,1]
- Jamesas.vector(x[,1])
会产生一个向量,它不是一个一列矩阵,并且仍然带有名称。 - mathematical.coffee