将矩阵与额外元素相乘 - 表示

Multiplying a matrix with an extra element - representation

由于 R 没有以零作为索引的 matrices/vectors,因此在 Basic 中如何执行此操作不是很直观。

我经常需要将一个矩阵(比如大小为 3 乘以 5)与大小为 4 的向量相乘,前面加上“1.00”作为第一个元素。这些年来(几十年),第一个元素被称为第零元素。现在我必须想出一个合适的方法在 R 中做到这一点。

A <- matrix(c(2, -1, 4.2, 3, 0, -4, -2, 4.5, 2, 0.4, 4, 0, -1.5, 2, 2), 3, 5, byrow=TRUE)

x <- c(10.0, 20.0, 30.0, 25)

现在我应该形成一个新向量 xx,首先是 1,然后是 x xx <- c(1, 10.0, 20.0, 30.0, 25) 的元素,然后 A 乘以这个 xx.

在 R 中执行此操作的好方法是什么?梯队?

你可以做任何一个

A %*% c(1, x)

#      [,1]
# [1,]  166
# [2,]  136
# [3,]   84

A[, -1, drop = FALSE] %*% x + A[, 1, drop = FALSE]


#      [,1]
# [1,]  166
# [2,]  136
# [3,]   84

我更喜欢第一个,并不是因为它看起来更简单,而是因为在 R 中,它不像第二个那样使用更多的内存。