burt <- function(table) { disj <- data.frame(lapply(1:ncol(table), function(i) { col <- table[, i] lev <- names(table)[i] n <- length(col) col <- as.factor(col) x <- matrix(0, n, length(levels(col))) x[(1:n) + n * (unclass(col) - 1)] <- 1 dimnames(x) <- list(row.names(table), paste(lev, levels(col), sep = ".")) return(x) })) burt <- as.matrix(t(disj)) %*% as.matrix(disj) burt <- data.frame(burt) names(burt) <- names(disj) row.names(burt) <- names(disj) return(burt) } disj <- function(table) { return(data.frame(lapply(1:ncol(table), function(i) { col <- table[, i] lev <- names(table)[i] n <- length(col) col <- as.factor(col) x <- matrix(0, n, length(levels(col))) x[(1:n) + n * (unclass(col) - 1)] <- 1 dimnames(x) <- list(row.names(table), paste(lev, levels(col), sep = ".")) return(x) }))) }