いくつかのデータベクトルに関する情報を表すバイナリ値を持つ2つのベクトルがあります。最初のベクトルは、データベクトルの特定の要素が壊れているかどうかを識別します。2番目のベクトルは、他の要素が影響を受け、したがって壊れている範囲を識別します。ベクトルは次のようになります。
itself_broken = c(FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE)
startpoint = c(TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE)
ここで、次の意味で壊れているすべての要素を見つけたいと思います。2つの開始点の間の1つの要素が壊れている場合、これら2つの開始点の間の他のすべての要素(左側の開始点を含む)も壊れています。したがって、上記の例では、結果のベクトルは次のようになります。
all_broken = c(FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE)
これを実装するには、すべてのselfs_broken要素が上向きになり、開始点に到達するまで要素を壊れているとマークします。しかし、これは私には本当に非効率に思えます。
これを解決する正しい方法は何ですか?