Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在所有对中执行一次发生的函数_R - Fatal编程技术网

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
...               .....                .....  ..