3

我定义了 2 个数值向量,如下所示:

> x <- c(1,2)
> y <- c(1,2)

现在我想要一个 2x2 矩阵,例如通过添加元素xy基于它们的索引来填充,所以最终结果应该如下所示:

     [,1] [,2]
[1,]    2    3
[2,]    3    4

使用嵌套的 for 循环来实现这一点是微不足道的,但不会在非常大的数据集上执行。试图用例如矢量化它

> z <- matrix(nrow=2, ncol=2)
> z[x,y] <- x + y

失败,因为+运算符在对 .进行赋值之前将x和作为向量添加。使用带索引的显式下标也会失败:yzij

> i <- 1:2
> j <- 1:2
> z[i,j] <- x[i] + y[j]
> z
     [,1] [,2]
[1,]    2    2
[2,]    4    4

有没有办法使用矢量化/下标来实现我想要的,或者我是否仅限于嵌套的 for 循环或应用函数之一?

4

1 回答 1

4

也许您正在寻找outer 功能?

outer(x,y,"+")

这使 :

     [,1] [,2]
[1,]    2    3
[2,]    3    4
于 2013-02-26T15:18:23.307 回答