я хочу построить график, а применить цикл к фрейму данных algo2
, который содержит узлы, и для каждого набора узлов я воздействую на цвет.
это мой фрейм данных
> algo2
node Neighbors
1 34 9, 10, 14, 15, 16, 19, 20, 21, 23, 24, 27, 28, 29, 30, 31, 32, 33
2 1 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 18, 22
3 26 25
и я применяю этот код перед построением графика:
for(i in 1:nrow(algo2)){
nnn<-as.data.frame(algo2$Neighbors[i])
nnn<-as.character(nnn[,1])
aa<-as.character(algo2$node[i])
V(g)$color <- ifelse(V(g)$name %in% c(aa,nnn),
rainbow(i),
"white")
}
V(g)$shape<-
ifelse(V(g)$name %in% AllNeighbors2_algo2[,1],
"rectangle",
"circle")
V(g)$size<-ifelse(V(g)$name %in% AllNeighbors2_algo2[,1],
4,
3)
plot.igraph(g,
vertex.color=V(g)$color,
vertex.size=V(g)$size,
vertex.shape=V(g)$shape)
проблема в том, что когда я запускаю график, он принимает только последнее значение, это означает, что он окрашивает только вершины 26
и 25
. Я хочу, чтобы каждый кадр данных строки имел цвет, отличный от других строк. спасибо за вашу помощь.
g
. Кроме того, какова структура столбцаNeighbors
? Это символьное значение со вставленными запятыми? Потому что"3" %in% "3, 4"
возвращает ЛОЖЬ. Вам нужен правильный вектор значений символов."3" %in% c("3","4")
. Включитеdput()
изalgo2
, чтобы было понятнее. - person MrFlick   schedule 13.02.2015algo2
, которую вы используете, и сделать с нейdput(algo2)
. Это возвращает содержимое фрейма данных в консоль. Затем вы можете скопировать результат из консоли, и у вас будетvariable <- structure(...)
. Любой, кто читает ваш пост, сможет оценить эту строку и будет иметь точно такие же данные, как и вы. Кажется, это самый простой способ воспроизвести ваш вопрос. Я узнал об этом совсем недавно, это очень полезная команда для stackoverflow. - person puslet88   schedule 15.02.2015