String 获取所有可能的字符串序列,其中每个元素来自R中的不同集合
假设我有4个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){
字符元素向量:
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