我定义了 2 个数值向量,如下所示:
> x <- c(1,2)
> y <- c(1,2)
现在我想要一个 2x2 矩阵,例如通过添加元素x
并y
基于它们的索引来填充,所以最终结果应该如下所示:
[,1] [,2]
[1,] 2 3
[2,] 3 4
使用嵌套的 for 循环来实现这一点是微不足道的,但不会在非常大的数据集上执行。试图用例如矢量化它
> z <- matrix(nrow=2, ncol=2)
> z[x,y] <- x + y
失败,因为+
运算符在对 .进行赋值之前将x
和作为向量添加。使用带索引的显式下标也会失败:y
z
i
j
> i <- 1:2
> j <- 1:2
> z[i,j] <- x[i] + y[j]
> z
[,1] [,2]
[1,] 2 2
[2,] 4 4
有没有办法使用矢量化/下标来实现我想要的,或者我是否仅限于嵌套的 for 循环或应用函数之一?