我想用字符串中重复B
个字符的次数替换字符串。
这是代表性输入df
:
df <- c("AA", "AB", "BB", "BBB", "D", "ABB")
我预期的out
输出就是这样:
out <- c("0", "1", "2", "3", "0", "2")
有什么想法吗?谢谢!
答案 0 :(得分:1)
你想把矢量作为字符吗?
df <- c("AA", "AB", "BB", "BBB", "D", "ABB")
sapply(strsplit(df, ''), function(x) as.character(sum(x == 'B')))
# [1] "0" "1" "2" "3" "0" "2"
或没有
df <- c("AA", "AB", "BB", "BBB", "D", "ABB")
sapply(strsplit(df, ''), function(x) sum(x == 'B'))
# [1] 0 1 2 3 0 2
答案 1 :(得分:1)
您可以使用regmatches
> match <- regmatches(df, regexpr("B+", df))
> res <- grepl("B+", df)
> res[res]<- nchar(match)
> res
[1] 0 1 2 3 0 2
答案 2 :(得分:1)
以下是gsub
nchar
方法:
df <- c("AA", "AB", "BB", "BBB", "D", "ABB")
nchar(gsub("[^B]", "", df))
## [1] 0 1 2 3 0 2