Как заставить igraph игнорировать пустые ячейки? - PullRequest
0 голосов
/ 30 апреля 2018

Итак, у меня есть этот фрейм данных, который мы будем называть test_a2. Я хочу использовать igraph для создания карты сети.

Col 1      Col 2     Col 3    Col 4

 Table A | Table B | Table C | 

 Table Z | Table A | Table C | Table Y

 Table K | Table L | Table M | Table B

 Table J | Table H | 

В настоящее время я использую следующий код для сопоставления нескольких столбцов

plot(graph.data.frame(rbindlist(lapply(seq(ncol(test_a2)-1), function(i) test_a2[i:(i+1)]))))

Это дает мне график с узлами и ребрами. Однако там, где есть пустое пространство, для которого он создает узел и создает ненужное соединение. Во всяком случае, чтобы это игнорировать это?

1 Ответ

0 голосов
/ 01 мая 2018

Будет ли это работать?

library(igraph)
library(data.table)
test_a2 <- data.frame(col1 = c("A","Z","K","J"),
                      col2 = c("B","A","L","H"),
                      col3 = c("C","C","M",""),
                      col3 = c("","Y","B",""), stringsAsFactors=FALSE)
test_a2[test_a2 ==""] <- NA

test_a3 <- na.omit(rbindlist(lapply(seq(ncol(test_a2)-1), function(i) test_a2[i:(i+1)])))
plot(graph.data.frame(test_a3))][1]][1]

Graph

Одно замечание об этом подходе: граф не будет содержать вершин, которые не связаны ни с чем, кроме «пустых» ячеек. Если вам нужно включить их, вы можете добавить их позже.

...