改善的R代码里面效率我有一个数据使用组合
数据:
[1] "146002 1591246 1453825 1976867 318484"
[2] "669019 557068 787848 1752826 595490 1370072 32948 1059410 456048 2075616 2151636"
[3] "7052 84626 1876916 289198 1925401"
[4] "2074708 609769 2074708 1586598 1750679"
[5] "230221 818400 230221 550378 569906 158775 178756"
[6] "357215 1000036 45393
我要生成,对于每个行cobination形成
为这样的方式的这些组合第1行
“146002 1591246”, “146002 145825”, “146002,1976867”, “1591246 1453825”,...
五个值的组合以及一对两个和所有行的这一组合。
然后我需要绑定所有这些价值的载体,从而最终输出的样子:
final output :
146002 1591246
146002 145825
.........
我做以下,但其采取了大量的时间:
gram_2<-vector()
for(i in 1:length(data))
{
if(length(unlist(strsplit(data[i]," ")))>2){
comb<-combn(unlist(strsplit(data[i]," ")),2)
for(j in 1:ncol(comb))
{
gram_2<-rbind(gram_2,paste(comb[,j],collapse=" "))
}
}
gram_2<-rbind(gram_2,paste(data[i],collapse=" "))
}
谢谢
不知道对速度的提高,但'combn'有一个'FUN'参数,让您将'paste'移入'combn'调用本身(并因此不需要'do.call')。 – A5C1D2H2I1M1N2O1R2T1
另外,在'strsplit'中加入'fixed = TRUE'通常会导致更高效的处理(如果模式是固定的,它看起来在这里)。 – A5C1D2H2I1M1N2O1R2T1
谢谢,我不知道combn有一个有趣的论点。 :) –