假设我们有这些数据:
a <- c("ham","bamm","comb")
表示1克,这是上面列表的矩阵表示。
# h a m b c o
# 1 1 1 0 0 0
# 0 1 2 1 0 0
# 0 0 1 1 1 1
我知道table(strsplit(a,split = "")[i]) for i in 1:length(a)
将为每个人提供分开的计数。但我不知道如何使用rbind
将它们作为一个整体来制作,因为长度和列名称不同。
之后,我想使用欧几里德或曼哈顿距离来找到每个人的相似度矩阵:
# ham bamm comb
# ham 0 3 5
# bamm 3 0 4
# comb 5 4 0
答案 0 :(得分:2)
你可以这样做:
s <- stack(setNames(strsplit(a,split=""),a))
m <- t(table(s))
> m
values
ind a b c h m o
ham 1 0 0 1 1 0
bamm 1 1 0 0 2 0
comb 0 1 1 0 1 1
然后使用dist:
> as.matrix(dist(m,method='manhattan'))
ham bamm comb
ham 0 3 5
bamm 3 0 4
comb 5 4 0
答案 1 :(得分:1)
您也可以使用"INTERNET","10.10.10.0/24","SCB-INET-A"
包。
stringdist
使用library(stringdist)
a <- c("ham","bamm","comb")
# stringdistmatrix with qgram calculations
stringdistmatrix(a, a, method = 'qgram')
[,1] [,2] [,3]
[1,] 0 3 5
[2,] 3 0 4
[3,] 5 4 0
stringdist