# NOT RUN {
ar1 <- array(1:8, dim=c(2,2,2), dimnames=list("a"=1:2,"b"=1:2,"c"=1:2))
ar2 <- array(1:8, dim=c(2,2,2), dimnames=list("b"=1:2,"c"=1:2,"d"=1:2))
## ## armarg ##
## Marginalize down to the bc-array
ar_marg(ar1, 2:3)
ar_marg(ar1, c("b","c"))
ar_marg(ar1, ~b + c)
## Marginalize over 'everything'
ar_marg(ar1, NULL)
ar_marg(ar1, ~1)
ar_marg(ar1, character(0))
ar_marg(ar1, integer(0))
## This gives an error (as expected)
## ar_marg(ar1, c(2, 5))
## ar_marg(ar1, c("b","w"))
## ar_marg(ar1, ~b + w)
## ## ar_perm ##
ar_perm(ar1, 1:3) ## No change - an abc-table
ar_perm(ar1, c(2,3,1)) ## A bca-table
ar_perm(ar1, ~b + c + a)
## This gives error
## ar_perm(ar1, c(2,1))
## ar_perm(ar1, c(2,1,5))
## ar_perm(ar1, c(2,1,NA))
## ## ar_mult etc ##
## Multiply two arrays
out <- ar_mult(ar1, ar2)
out <- ar_perm(out, ~a + b + c + d) ## Just for comparison below
ftable(out)
## Alternative approch
df1 <- as.data.frame.table(ar1)
df2 <- as.data.frame.table(ar2)
df3 <- merge(df1, df2, by=c("b","c"))
df3 <- transform(df3, Freq=Freq.x*Freq.y)
ar3 <- xtabs(Freq ~ a + b + c + d, data=df3)
ftable(ar3)
## ## ar_expand ##
ar1.e <- ar_expand(ar1, ar2)
## ar1.e has dimnames b,c,d,a; values are simply replicated for each
## level of d.
dimnames(ar1.e)
ftable(ar1.e, row.vars="d")
## ar_expand:
ar_expand(ar1, list(u=1:2))
ar1 %a^% list(u=1:2)
## ## aralign ##
ar2.e <- ar_expand(ar2, ar1)
names(dimnames(ar2.e))
names(dimnames(ar1.e))
out <- ar_align(ar1.e, ar2.e)
names(dimnames(out)) ## Same as ar2.e
# }
Run the code above in your browser using DataLab