我定义了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循环或其中一个apply函数?
答案 0 :(得分:4)
也许您正在寻找outer
功能?
outer(x,y,"+")
给出了:
[,1] [,2]
[1,] 2 3
[2,] 3 4