我想在字符串中匹配字符之前计算字符插入的数量。我从"trafos"
函数输出中提取adist()
属性以返回转换字符串。当只有一个我感兴趣的角色的实例时,这很好用。例如,
attr(adist("r","world",counts=T),"trafos")
返回
[,1]
[1,] "IIMII"
因此,在" M"之前计算" I" s会给我我的答案:2
但是,当存在多个实例时,由于某种原因,该函数仅返回最终实例的匹配项。例如,
attr(adist("r","barry",counts=T),"trafos")
返回
[,1]
[1,] "IIIMI"
我有什么方法可以让adist()
返回" IIMMI"或至少" IIMII"?也许我需要打开另一个功能或选项?我应该考虑酿造自己的功能吗?
感谢您的帮助
答案 0 :(得分:0)
这不是一个特别优雅的解决方案,但它可能已经足够好了。
试
parts <- strsplit("barry", "r")[[1]]
nchar(parts[1])
编辑: 我把它放在一个函数中。
nchar.before = function(before, string)
{
parts = strsplit(string, before)
return(as.numeric(lapply(parts, function(v) nchar(v[1]))))
}
示例:
strings = c("rabc", "abcr", "abcrabcr", "abcabc")
nchar.before(before = "r", string = strings)
输出:0 3 3 6
注意如果&#34; r&#34;它是如何输出字符串的整个长度的。不在其中。您可以轻松修改此项,而不是生成NA
或其他内容。