2

grepl()関数を使用して、文字のベクトルがパターンと一致するかどうかを判断し、そのパターンに基づいて、ベクトル内の文字を連結します。例えば:

vec <- c("a","b","a","c","a","c","a","b") 
grepl("[a]", vec)
TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE

TRUEに続くすべての値を、次のTRUEまで結合して、次のようなベクトルになるようにします。

"ab", "ac", "ac", "ab"

考えてくれてありがとう。

4

2 に答える 2

5

あなたが結婚していない場合grepl()

VEC <- paste(vec, collapse="")                # Collapse into single string ...
strsplit(VEC, "(?<=.)(?=a)", perl=TRUE)[[1]]  # ... then split it before each 'a'
# [1] "ab" "ac" "ac" "ab"
于 2013-03-26T16:39:50.670 に答える
3

これを使って:

groups <- cumsum(grepl("[a]", vec))
# > groups
# [1] 1 1 2 2 3 3 4 4
aggregate(vec, by=list(groups=groups), FUN=function(x)paste(x,collapse=""))

#   groups  x
# 1      1 ab
# 2      2 ac
# 3      3 ac
# 4      4 ab
于 2013-03-26T16:35:30.150 に答える