我想生成具有向量元素的所有可能组合的向量,其中元素的连续多次出现被视为该元素的单次出现。
简单案例
对于 n = 2,
original <- c("a","a","a","b","b","b")
v1 <- c("b","b","b","a","a","a")
Run Code Online (Sandbox Code Playgroud)
因此,所有唯一出现的 a 都会与 b 交换。
对于 n = 3,我们得到
original<-c("a","a","a","b","b","b","c","c","c")
ver1<-c("a","a","a","c","c","c","b","b","b")
ver2<-c("b","b","b","a","a","a","c","c","c")
ver3<-c("b","b","b","c","c","c","a","a","a")
ver4<-c("c","c","c","b","b","b","a","a","a")
ver5<-c("c","c","c","a","a","a","b","b","b")
Run Code Online (Sandbox Code Playgroud)
因此,所有唯一出现的a交换与b和c,所有唯一出现的b交换与a和cAND 所有唯一出现的c交换与b和a。
案例最多为 n = 10。(我相信不同组合的可能向量为 10!)
此外,可以有多个 a、b、c 块......
复杂情况
对于 n = 2;
original<-c("a","a","a","b","b","b","a","a","b","b")
ver1<-c("b","b","b","a","a","a","b","b","a","a")
Run Code Online (Sandbox Code Playgroud)
但如果我们正确地交换元素,复杂情况和简单情况应该不重要。
我正在尝试:(n=2)
original<-c("a","a","a","b","b","b","a","a","b","b")
ver1<-replace(original,which(original=='a'),'b')
ver1<-replace(ver1,which(original=='b'),'a')
gives ver1<-c("b","b","b","a","a","a","b","b","a","a")
Run Code Online (Sandbox Code Playgroud)
但不确定如何自动化此操作。