R 如何在所有对中执行一次发生的函数
我在这里问了一个很难回答的问题。我发现了一个好主意,我想试试 这是我的想法和数据(与那个问题的数据相同) 棘手的是,它应该在引用和另一个引用之间发生一次,例如,它应该只计算一次引用和另一个引用之间的距离R 如何在所有对中执行一次发生的函数,r,R,我在这里问了一个很难回答的问题。我发现了一个好主意,我想试试 这是我的想法和数据(与那个问题的数据相同) 棘手的是,它应该在引用和另一个引用之间发生一次,例如,它应该只计算一次引用和另一个引用之间的距离 Afghanestankabolindia and Afghanestan 而不是 Afghanestan and Afghanestankabolindia 意味着引用总是最长的字符串不确定您期望的输出格式是什么,但我认为这符合您的要求: ref = as.character(df$la
Afghanestankabolindia and Afghanestan
而不是
Afghanestan and Afghanestankabolindia
意味着引用总是最长的字符串不确定您期望的输出格式是什么,但我认为这符合您的要求:
ref = as.character(df$label)
all_combs = as.data.frame(t(combn(ref[order(nchar(ref),decreasing = T)],2)))
all_combs$val = mapply(adist,all_combs$V1,all_combs$V2)
首先,我们创建所有组合(对ref
向量进行排序,使第一个元素始终是较长的元素(即引用)。然后我们使用mapply计算所有组合的adist
输出:
V1 V2 val
1 Afghanestankabolindia USAargentinabrazil 15
2 Afghanestankabolindia indiaAfghanestan 15
3 Afghanestankabolindia Afghanestankabol 5
4 Afghanestankabolindia Holandnorway 17
5 Afghanestankabolindia USAargentina 17
6 Afghanestankabolindia Afghanestan 10
7 Afghanestankabolindia holandindia 13
8 Afghanestankabolindia holand 16
9 Afghanestankabolindia USA 21
10 USAargentinabrazil indiaAfghanestan 16
11 USAargentinabrazil Afghanestankabol 13
12 USAargentinabrazil Holandnorway 14
13 USAargentinabrazil USAargentina 7
14 USAargentinabrazil Afghanestan 15
15 USAargentinabrazil holandindia 13
16 USAargentinabrazil holand 16
17 USAargentinabrazil USA 16
18 indiaAfghanestan Afghanestankabol 10
19 indiaAfghanestan Holandnorway 14
... ..... ..... ..
希望这有帮助!非常感谢,我喜欢并接受了您的回答
ref = as.character(df$label)
all_combs = as.data.frame(t(combn(ref[order(nchar(ref),decreasing = T)],2)))
all_combs$val = mapply(adist,all_combs$V1,all_combs$V2)
V1 V2 val
1 Afghanestankabolindia USAargentinabrazil 15
2 Afghanestankabolindia indiaAfghanestan 15
3 Afghanestankabolindia Afghanestankabol 5
4 Afghanestankabolindia Holandnorway 17
5 Afghanestankabolindia USAargentina 17
6 Afghanestankabolindia Afghanestan 10
7 Afghanestankabolindia holandindia 13
8 Afghanestankabolindia holand 16
9 Afghanestankabolindia USA 21
10 USAargentinabrazil indiaAfghanestan 16
11 USAargentinabrazil Afghanestankabol 13
12 USAargentinabrazil Holandnorway 14
13 USAargentinabrazil USAargentina 7
14 USAargentinabrazil Afghanestan 15
15 USAargentinabrazil holandindia 13
16 USAargentinabrazil holand 16
17 USAargentinabrazil USA 16
18 indiaAfghanestan Afghanestankabol 10
19 indiaAfghanestan Holandnorway 14
... ..... ..... ..