如何在r中打印组合?

时间:2014-01-27 08:19:45

标签: r dataframe apriori

我有像这样的数据代码conatin数据

  

dat< -data.frame(A = c(“V1”,“V2”,“V3”,“V4”),B = c(“V1”,“V2”,“V3”,“V5”) ))

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

输出A

  

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中存储多个组合。这就是问题

1 个答案:

答案 0 :(得分:1)

您想要的输出看起来有点奇怪(多种组合是相同的),但我知道可能很难解释您想要的内容。以下代码可能会给您一些启发。它需要所有组合,并在=>前面显示未包含在该组合中的内容。

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))
    }
  }
}