3
rle
に基づいて以下の関数よりも、ベクトルを圧縮/崩壊させるより効率的な方法がありますか?以下の入力例と望ましい出力。 K = 2の場合反復要素のベクトルを最大k回繰り返す
入力
foov <- rep(c("a", "b", "a"), c(5, 3, 2))
、所望の出力は次のようになります
"a" "a" "b" "b" "a" "a"
及びK = 3のために、所望の出力は次のようになります。
"a" "a" "a" "b" "b" "b" "a" "a"
瞬間私はこれを達成するために次のようにrle
を使用しています:
collapseRLE <- function(v, k) {
vrle <- rle(v)
vrle$lengths[vrle$lengths > k] <- k
ret <- rep(vrle$values, vrle$lengths)
return(invisible(ret))
}
foov <- rep(c("a", "b", "a"), c(5, 3, 2))
print(collapseRLE(foov, 2))
を「K」のシーケンスを提供し、ベクトルとして列を抽出し、それを行うためのかなり良い方法です。 – nicola