I'm using R to generate DAGs with 4 nodes. I need to generate all the possible DAGs without using any packages. Because there are 6 pairs and each pair has 3 options: no egde, or two directions, the total possibilities are 3**6 = 729. I think it's a sort of dfs problem but I can't implement in R. This is my code, but it is too long, and still use build in function expand.grid. Is there any simple way to solve the problem? Thanks!
A <- matrix(c(0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0),nrow=4,byrow=T)
bases=c('A','B','C')
all = expand.grid(bases, bases, bases,bases,bases,bases)
nrow(all)
res = list()
for (i in (1:nrow(all))){
if (all$Var1[i] == 'A'){
A[1,2] = 0
A[2,1] = 0
}
if (all$Var1[i] == 'B'){
A[1,2] = 1
A[2,1] = 0
}
if (all$Var1[i] == 'C'){
A[1,2] = 0
A[2,1] = 1
}
if (all$Var2[i] == 'A'){
A[1,3] = 0
A[3,1] = 0
}
if (all$Var2[i] == 'B'){
A[1,3] = 1
A[3,1] = 0
}
if (all$Var2[i] == 'C'){
A[1,3] = 0
A[3,1] = 1
}
if (all$Var3[i] == 'A'){
A[1,4] = 0
A[4,1] = 0
}
if (all$Var3[i] == 'B'){
A[1,4] = 1
A[4,1] = 0
}
if (all$Var3[i] == 'C'){
A[1,4] = 0
A[4,1] = 1
}
if (all$Var4[i] == 'A'){
A[2,3] = 0
A[3,2] = 0
}
if (all$Var4[i] == 'B'){
A[2,3] = 1
A[3,2] = 0
}
if (all$Var4[i] == 'C'){
A[2,3] = 0
A[3,2] = 1
}
if (all$Var5[i] == 'A'){
A[2,4] = 0
A[4,2] = 0
}
if (all$Var5[i] == 'B'){
A[2,4] = 1
A[4,2] = 0
}
if (all$Var5[i] == 'C'){
A[2,4] = 0
A[4,2] = 1
}
if (all$Var6[i] == 'A'){
A[3,4] = 0
A[4,3] = 0
}
if (all$Var6[i] == 'B'){
A[3,4] = 1
A[4,3] = 0
}
if (all$Var6[i] == 'C'){
A[3,4] = 0
A[4,3] = 1
}
res[[i]] = A
}