【发布时间】:2019-12-18 23:38:56
【问题描述】:
假设你有一个矩阵a
a <- matrix(1:9, 3, 3)
a
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
和一个向量b 指示您要提取的每一行的哪个元素。即向量b表示元素所在的列,例如:
b <- c(1, 3, 1)
如果我们想提取指定的数据点,我们可以像这样简单地索引每个所需的元素:
a[cbind(1:nrow(a),b)]
[1] 1 8 3
我想用一个负索引向量来做。也就是说,R 应该返回一个矩阵,其中每行恰好省略一个元素(在本例中为 3x2 矩阵)。如果我以一种天真的方法尝试它,R 会抛出一个错误:
c = -b
a[cbind(1:nrow(a),c)]
Error in a[cbind(1:nrow(a), c)] :
negative values are not allowed in a matrix subscript
谢谢!
【问题讨论】:
-
在什么意义上省略?替换为 NA、空格、某个数字?
-
空白空间,我想输入我的 3x3 矩阵并得到一个 3x2 矩阵作为输出,其中在每一行中,向量
b中指示的元素被省略。