Table of Interactions – Case with pets and houses

Use table and crossprod:

out <- crossprod(table(houses, animals))
out[lower.tri(out, diag=TRUE)] <- NA
out
#         animals
# animals  cat dog rat snake spider
#   cat     NA   1   2     1      1
#   dog     NA  NA   0     0      0
#   rat     NA  NA  NA     1      1
#   snake   NA  NA  NA    NA      1
#   spider  NA  NA  NA    NA     NA

Since the output is a matrix you can suppress the printing of the NA values directly in print:

print(out,na.print="")
#         animals
# animals  cat dog rat snake spider
#   cat          1   2     1      1
#   dog              0     0      0
#   rat                    1      1
#   snake                         1
#   spider                         

Leave a Comment