微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:字符串中不同字符数的成对矩阵

如何解决R:字符串中不同字符数的成对矩阵

我有一个向量,其中包含大量长度相同的字符串。例如:

vec = c("keep","teem","meat","weep")

我想比较此向量中的所有可能的字符串对,并计算它们之间不同的字符数。使用上面的向量,“ keep”将与向量中的每个其他字符串进行比较,“ teem”将与其他字符串进行比较,依此类推。 我只想计算每个字符串中相同位置的不同字符数。因此,例如“ keep”与“ teem”将有2个差异,“ keep”与“ meat”将有3个差异,依此类推。我想将结果输出为成对矩阵,其中向量中的字符串组成行名和列名。

我从另一篇文章How can I compare two strings to find the number of characters that match in R,using substitution distance?)中学到,我可以在mapply中使用adist参数来计算两个字符串之间的差异数:

mapply(adist,string1,string2)

但是我不确定如何修改它以对向量中的每个可能的成对组合进行操作,并将结果放置在成对矩阵中。关于如何做到这一点的任何想法?谢谢!

解决方法

您是说像下面那样使用adist吗?

> `dimnames<-`(adist(vec),rep(list(vec),2))
     keep teem meat weep
keep    0    2    3    1
teem    2    0    3    2
meat    3    3    0    3
weep    1    2    3    0
,

带有stringdistmatrix

的选项
library(stringdist)
out <- as.matrix(stringdistmatrix(vec))
dimnames(out) <- list(vec,vec)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。