我充滿TRUE
/FALSE
值的矩陣,我試圖找到每一行的第一TRUE
值的索引位置(或返回NA
如果有行中沒有TRUE
值)。下面的代碼完成了工作,但它使用了一個apply()
調用,我相信這只是for循環的一個包裝。我正在處理一些大型數據集,並且性能正在受到影響。有更快的方法嗎?如何R中矢量化在矩陣中的每一行此操作
> x <- matrix(rep(c(F,T,T),10), nrow=10)
> x
[,1] [,2] [,3]
[1,] FALSE TRUE TRUE
[2,] TRUE TRUE FALSE
[3,] TRUE FALSE TRUE
[4,] FALSE TRUE TRUE
[5,] TRUE TRUE FALSE
[6,] TRUE FALSE TRUE
[7,] FALSE TRUE TRUE
[8,] TRUE TRUE FALSE
[9,] TRUE FALSE TRUE
[10,] FALSE TRUE TRUE
> apply(x,1,function(y) which(y)[1])
[1] 2 1 1 2 1 1 2 1 1 2
在可讀性方面,'apply' /'which'非常清晰AR。 – Vince 2010-08-24 14:15:38