如何在r中打印组合



我有数据代码conatin数据

dat< -data.frame(a = c(" v1",v2; v3;; v3" v5&quot')

我想组合每一个,并将输出打印为

的输出

v1 => v2v3v4

v2 => v1v3v4

v3 => v1v2v4

v1v2 => v3v4

v1v3 => v2v4

v3v4 => v1v2

v2v4 => v1v3

v2v3v4 => v1

v1v3v4 => v2

v1v2v4 => v3

类似的方式B组合我的代码是

vd<-data.frame()
vd<-data.frame(A=c("V1","V2","V3","V4"),B=c("V1","V2","V3","V4")) 
vf<-length(vd)
i<-1
while(i<=vf)
{
vd<-dat[,i]
leng<-nrow(dat)
selectru<-combn(vd,leng)
fst<-selectru[i]
select<-data.frame()
select<-selectru[selectru[,1]!=selectru[i],]
m<-length(select)
select<-combn(select,m)
snd <-apply(select,2,function(rows) paste0(rows, collapse = ""))
cat(sprintf(""%s" =>"%s"n", fst, snd))
i<-i+1
}

此代码不起作用。我不能将多个组合存储在单个data.frame中。那就是问题

您所需的输出似乎有些奇怪(多个组合是相同的),但是我知道可能很难解释您想要的内容。以下代码可能会给您一些灵感。它需要所有组合,并且在=>的前面显示了该组合中未包含的内容。

dat<-data.frame(A=c("V1","V2","V3","V4"),B=c("V1","V2","V3","V4")) 
for (h in 1:ncol(dat)) {
  for (i in 1:(nrow(dat)-1)) {
    combinations1 <- combn(nrow(dat), i)
    for (j in 1:ncol(combinations1)) {
      k <- combinations1[,j]
      a <- (dat[k,h])
      a <- paste(a, sep="", collapse="") 
      b <-(dat[-k,h])
      b <- paste(b, sep="", collapse="") 
      cat(sprintf(""%s" =>"%s"n", a, b))
    }
  }
}

最新更新