2012-10-01 77 views
2

我目前使用這個實現:在R中,是否有任何本機函數獲取矩陣的行或列,具體取決於參數?

getVal = function(i, x, margin) { 
    rst = ifelse(margin==1, x[i, ], x[, i]) 
} 

即返回x的第i行或列,取決於保證金的價值。

===更新===

剛剛意識到我在這裏ifelse(x,y,z)語句的使用是錯誤的,因爲它返回一個值相同的長度作爲第一個參數。我的getVal實施應該有:

... 
rst = if (margin == 1) x[i, ] else x[, i] 
... 
+0

你跟此列或行做更多的事情? – Maiasaura

+0

什麼類型的對象是x?矩陣與data.frame會有不同的答案。 – Justin

+0

@Maiasaura,我可以使用getVal的輸出,但我假設這裏'apply'不是一個選項。 – Causality

回答

7

abind::asub()做一些事情非常喜歡你試圖做什麼(也很好地推廣到更高維數組)。它的idxdims參數分別對應於您的imargin參數。

library(abind) 

(m <- matrix(1:6, ncol=2)) 
#  [,1] [,2] 
# [1,] 1 4 
# [2,] 2 5 
# [3,] 3 6 

asub(x = m, idx = 2, dims = 1) # Extract 2nd row 
# [1] 2 5 

asub(x = m, idx = 2, dims = 2) # Extract 2nd column 
# [1] 4 5 6 
+0

感謝喬希的清晰解釋。 – Causality

相關問題