String 获取所有可能的字符串序列,其中每个元素来自R中的不同集合

String 获取所有可能的字符串序列,其中每个元素来自R中的不同集合,string,r,combinations,permutation,diacritics,String,R,Combinations,Permutation,Diacritics,假设我有4个字符元素向量: s1 <- c("o", "ó") s2 <- c("c", "ć") s3 <- c("o", "ó") s4 <- c("z", "ź", "ż") [我的总体目标是从我的母语中的给定单词生成所有可能的单词,假设给定的单词有一些发音标记。我首先提取所有作为发音标记的候选字符,然后希望插入它们或它们的发音标记。]它不是非常优雅,但是使用上面的s1-s4定义,这里有一个快速for循环for循环,它将打印您请求的向量 for(a in s1){

假设我有4个
字符
元素向量:

s1 <- c("o", "ó")
s2 <- c("c", "ć")
s3 <- c("o", "ó")
s4 <- c("z", "ź", "ż")

[我的总体目标是从我的母语中的给定单词生成所有可能的单词,假设给定的单词有一些发音标记。我首先提取所有作为发音标记的候选字符,然后希望插入它们或它们的发音标记。]

它不是非常优雅,但是使用上面的
s1
-
s4
定义,这里有一个快速for循环for循环,它将打印您请求的向量

for(a in s1){
  for(b in s2){
    for(c in s3){
      for(d in s4){
        print(c(a,b,c,d))
      }
    }
  }
}
输出:

[1] "o" "c" "o" "z"
[1] "o" "c" "o" "z"
[1] "o" "c" "o" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "o" "z" 
[...]
   Var1 Var2 Var3 Var4
1     o    c    o    z
2     ó    c    o    z
3     o    c    o    z
4     ó    c    o    z
5     o    c    ó    z
6     ó    c    ó    z
7     o    c    ó    z
8     ó    c    ó    z
[...]
正如shadow在上面所说的,
expand.grid()
是一个更加优雅的解决方案:

expand.grid(列表(s1、s2、s3、s4))

输出:

[1] "o" "c" "o" "z"
[1] "o" "c" "o" "z"
[1] "o" "c" "o" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "ó" "z"
[1] "o" "c" "o" "z" 
[...]
   Var1 Var2 Var3 Var4
1     o    c    o    z
2     ó    c    o    z
3     o    c    o    z
4     ó    c    o    z
5     o    c    ó    z
6     ó    c    ó    z
7     o    c    ó    z
8     ó    c    ó    z
[...]

您也可以检查
数据。表格

library(data.table)
res <- CJ(s1=s1,s2=s2,s3=s3,s4=s4) #order the result by columns

expand.grid
@shadow
?expand.grid
可能是一个更好的答案,我对它进行了基准测试,
expand.grid
快得多(其大小元素与我的帖子示例中的元素类似)。
用户3793180
。我试过system.time(expand.grid(1:1000,1:10000))用户系统运行时间0.418 0.064 0.483>system.time(CJ(1:1000,1:10000))用户系统运行时间0.015 0.021 0.036。我相信data.table在我们谈论触摸的较大数据时胜过exmpand.grid。当我测试
系统时,时间(res