我想知道被0
包围的1
的数量。但是,如果有多个0
没有被1
中断,则只计为一个string <- "1101000010101111001110"
。
length(gregexpr(pattern ="101",string)[[1]])
这是我能做的最接近的事情:
5
预期输出:
#DATA
df = mtcars
colnames(df) = gsub("mpg","id",colnames(df))
df$am = as.factor(df$am)
df$gear = as.factor(df$gear)
df$id = as.factor(df$id)
#Filter out 'id' after selecting factors
df[,sapply(df, is.factor) & colnames(df) != "id"]
答案 0 :(得分:9)
使用perl=True
,您可以使用(?=...)
的前瞻断言来查找重叠匹配:
(?=...)
是lookahead assertion:
/\w+(?=\t)/
零宽度正向前瞻断言。例如,
$&
匹配单词后跟标签,而不包括length(gregexpr("(?=10+1)", string, perl=TRUE)[[1]])
中的标签。
case