grouping_nodes = function (connections = NULL) {
# TODO: Fix case when threshold = 0
# Modification of connections colnames
# TODO: Refine the code in the functions that use this DS
# colnames(connections) = c("row","col")
# List of id elements
simplificationMatrix = as.data.frame( unique(c(connections$row, connections$col)) );
colnames(simplificationMatrix) = "id"
# List of ids to iterate
possibleNodes = as.numeric(simplificationMatrix$id)
selectedNodes = vector()
candidates = table( c(connections$row, connections$col) )
candidatesMatrix = as.data.frame(cbind(
as.numeric(rownames(candidates)), as.matrix(candidates)
));
colnames(candidatesMatrix) = c("id","count");
candidatesMatrix = merge(candidatesMatrix, simplificationMatrix, all = TRUE)
candidatesMatrix$count[is.na(candidatesMatrix$count) == TRUE] = 0
candidatesMatrix = candidatesMatrix[order(candidatesMatrix$count, decreasing = TRUE),]
while (length(possibleNodes) > 0) {
row = candidatesMatrix$id[1]
if (length(selectedNodes) == 0) {
subset = connections[(connections$row == row) | (connections$col == row),]; head(subset)
} else {
subset = connections[((connections$row == row) | (connections$col == row)) &
(!(connections$row %in% selectedNodes)),]; head(subset)
}
if (nrow(subset) > 0) {
values = unique(c(subset$row, subset$col))
} else {
values = row
}
simplificationMatrix$nodes[(simplificationMatrix$id %in% values) & !(simplificationMatrix$id %in% selectedNodes)] = row
possibleNodes = possibleNodes[!(possibleNodes %in% values)]
candidatesMatrix = candidatesMatrix[!(candidatesMatrix$id %in% values),]
selectedNodes = c(selectedNodes,values)
}
return(simplificationMatrix)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.