将字符串替换为R中特定字符的等效数字

时间:2015-04-21 21:43:27

标签: r string replace

我想用字符串中重复B个字符的次数替换字符串。

这是代表性输入df

df <- c("AA", "AB", "BB", "BBB", "D", "ABB")

我预期的out输出就是这样:

out <- c("0", "1", "2", "3", "0", "2")

有什么想法吗?谢谢!

3 个答案:

答案 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