我定义了两个数值向量,如下所示:
> 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失败,因为+运算符在向z赋值之前将x和y作为向量添加。对索引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循环或应用函数之一?
发布于 2013-02-26 23:18:23
也许你正在寻找的是outer的函数?
outer(x,y,"+")这就给出了:
[,1] [,2]
[1,] 2 3
[2,] 3 4https://stackoverflow.com/questions/15092666
复制相似问题