我有以下字串:
center <- "XXXXXXX"
sides <- c("aa", "bb", "cc") # Could be longer than 3 members
# string length of members could be varied.
我想要做的是在所有可能的組合中將成員附加sides到兩端的字串串列,產生:center
aaXXXXXXXaa
aaXXXXXXXbb
aaXXXXXXXcc
bbXXXXXXXbb
bbXXXXXXXaa
bbXXXXXXXcc
ccXXXXXXXcc
ccXXXXXXXaa
ccXXXXXXXbb
我怎樣才能用 R 實作這一點?
uj5u.com熱心網友回復:
使用expand.grid并apply用paste:
> apply(expand.grid(sides, sides), 1, paste, collapse = center)
[1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb" "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
>
或者:
> apply(expand.grid(sides, center, sides), 1, paste, collapse='')
[1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb" "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
>
或者正如@Wimpel 提到的,你可以data.table::CJ用來獲取組合:
> apply(data.table::CJ(sides, sides), 1, paste0, collapse = center)
[1] "aaXXXXXXXaa" "aaXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXaa" "bbXXXXXXXbb" "bbXXXXXXXcc" "ccXXXXXXXaa" "ccXXXXXXXbb" "ccXXXXXXXcc"
>
uj5u.com熱心網友回復:
嘗試
> do.call(paste0, expand.grid(sides, center, sides))
[1] "aaXXXXXXXaa" "bbXXXXXXXaa" "ccXXXXXXXaa" "aaXXXXXXXbb" "bbXXXXXXXbb"
[6] "ccXXXXXXXbb" "aaXXXXXXXcc" "bbXXXXXXXcc" "ccXXXXXXXcc"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/343571.html
上一篇:將輸入字串傳遞給C中的函式
下一篇:冒泡排序沒有排序
