我有数据
数据:
[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
我希望以这样的方式生成这些组合,即形成每行的合并
第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=" "))
}
如何有效地完成这项工作?谢谢
答案 0 :(得分:1)
一线解决方案
apply(do.call(cbind, lapply(strsplit(data, " "), combn, 2)), 2, paste, collapse=" ")
根据阿南达更新。
unlist(lapply(strsplit(data, " ", fixed=TRUE), combn, 2, paste, collapse=" "))
答案 1 :(得分:0)
我认为粘在一起会使结果变得不那么有用,所以构造了一个两列矩阵:
do.call(rbind, sapply( lapply( sapply(vec, strsplit, " "), combn, 2),t))