2013-02-26 47 views
3

我定義2個數值向量如下:如何在基於下標的元素中逐個分配值?

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

現在我想有由例如填充2×2矩陣加入x並根據其指數y的元素,所以最終的結果應該是這樣的:

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

要使用嵌套的for循環實現,這是小事,但不會執行上非常大的數據集。嘗試使用例如

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

失敗,因爲+運營商做分配給z之前添加xy作爲載體。使用明確的下標與指數ij失敗,以及:

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

有沒有辦法達到我想要使用什麼矢量/標運算,還是隻能以嵌套的for循環或的應用功能之一?

回答

4

也許您在尋找outer的功能?

outer(x,y,"+") 

其中給出:

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

優秀的,我不知道,你可以用外()與_any_功能。只需檢查它是否比嵌套for循環運行速度快100倍(使用簡單的元素添加)。 – 2013-02-26 16:28:24

相關問題