我想知道是否有 R 语法从矩阵中提取列,并且在返回的向量上总是没有 name 属性(我希望依赖这种行为)。
我的问题是以下不一致:
- 当一个矩阵有不止一行时,我会得到没有名称属性
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
论点的东西?或者是否有一个选项我可以设置为“始终未命名”?我可以使用的一些技巧([
当提取的结果是向量时,以某种方式覆盖的行为?)