如何根据下标逐个元素地分配矩阵中的值?

时间:2013-02-26 15:16:13

标签: r

我定义了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分配之前将yz添加为向量。使用带有索引ij的显式下标也会失败:

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

有没有办法用矢量化/下标来实现我想要的东西,还是仅限于嵌套for循环或其中一个apply函数?

1 个答案:

答案 0 :(得分:4)

也许您正在寻找outer功能?

outer(x,y,"+")

给出了:

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