2017-12-20 3 views
0

論理行列とベクトルのすべての列のandを一緒に取ってベクトルを作成します。例:そして一緒に論理行列の列は1つのベクトルを得るために

a = c(TRUE, TRUE, FALSE, TRUE, FALSE, FALSE) 
A = matrix(a, nrow = 3, ncol = TRUE, byrow = TRUE) 

私は現在、私は

apply(A, 1, function(x) Reduce('&', x)) 

でこれをやっている

[1] TRUE FALSE FALSE 

を生産したいと思います。しかし、これは私の入力の大きさに非常に遅くなって、Iこれを行うより効率的な方法があるかどうか疑問に思っていました。

答えて

1

使用することが速くなります。代わりにReduceへの呼び出しの

apply(A,1,all) 

。それはおそらく行うにはさらに高速になりますので

また、rowSums機能は、はるかに高速apply(x,1,sum)と同等ですが、:

rowSums(A)==ncol(A) 
1

を代わりにapplyReduceを使用しての、オプションが変換のどちらかになります " 」data.frameにして、によって

Reduce(`&`, as.data.frame(A)) 
#[1] TRUE FALSE FALSE 

またはsplitを行います、次に

Reduce(`&`, split(A, col(A))) 
#[1] TRUE FALSE FALSE 
関連する問題