我定义两个数字向量如下:
> 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函数?