Вот пример из файла справки graph.data.frame.
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
"Esmeralda"),
age=c(48,33,45,34,21),
gender=c("F","M","F","M","F"))
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
"David", "Esmeralda"),
to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
same.dept=c(FALSE,FALSE,TRUE,FALSE,FALSE,TRUE),
friendship=c(4,5,5,2,1,1), advice=c(4,5,5,4,2,3))
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)
получая эти края
+ edges from 3d02353 (vertex names):
[1] Bob ->Alice Cecil ->Bob Cecil ->Alice David ->Alice David ->Bob
[6] Esmeralda->Alice
Как видите, в своем коде вы не создали массив вершин, но создали два отношения.
Особенно в ориентированном графе, вы не можете быстро объединить все данные в одну строку, если вы действительно хотите знать, что отношения развиваются противоположным образом.
Я бы предложил вам перейти к длинному формату с каждым направленным ребром (от, до) как отдельной строкой, а затем поместить поток в строку в соответствующем направлении.
Я бы также предложил использовать более описательные имена столбцов, такие как "экспортер", "импортер" или "от" "до", поскольку import1 и import2 действительно не предоставляют достаточно автономной информации, чтобы знать, что они собой представляют.
В качестве альтернативы, если вы действительно хотите выразить это как два разных отношения с Алжиром (import_from, export_to), то вы можете сделать это также. Но в этом случае всегда будет отображаться отношение Алжир -> х