将矩阵与额外元素相乘 - 表示
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 中,它不像第二个那样使用更多的内存。
由于 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 中,它不像第二个那样使用更多的内存。