Внешняя функция, тусклые цвета не соответствуют длине объекта;цветные края по принадлежности к вершине - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь создать сеть с использованием пакета R GGally, в частности, функции ggnet2.Я создал здесь воспроизводимый пример моей проблемы:

net = rgraph(10, mode = "graph", tprob = 0.5)
rownames(net)<-letters[1:10]
colnames(net)<-letters[1:10]
net = network(net, directed = FALSE)
phono<-data.frame(letters=letters[1:10],phono=c("vowel", "consonant","consonant","consonant","vowel","consonant","consonant","consonant","vowel", "consonant"))
table(phono)
net %v% "phono" <- as.character(phono$phono)
edge_color <- outer(X=1:nrow(phono), 
                    Y=1:nrow(phono),
                    FUN = function(x,y) {
                      ifelse(phono$phono[phono$letters %in% letters[x]]==phono$phono[phono$letters %in% letters[y]], 
                             as.character(phono$phono[phono$letters %in% letters[y]]),
                             "grey50")
                    })

Error in dim(robj) <- c(dX, dY) : 
dims [product 100] do not match the length of object [10]

ggnet2(net, color = "phono", palette = "Set2", label = "phono", edge.color = edge_color)

Мой реальный пример связан с протеомными данными, но при этом возникает та же ошибка.

Я прочитал похожие вопросы, в том числе следующие: Ошибка "dims [product xx] не соответствует длине объекта [xx]" при использовании функции R `external`

Эта ссылка заставляет меня думать, что ifelse не выполняет то, что я ожидаюэто волшебным образом.На самом деле, я думаю, что я использую очень неправильный синтаксис, чтобы делать то, что я хочу.

Я хочу, чтобы края были окрашены на основе группировки двух соединительных узлов.Если они принадлежат к разным группам, то я хочу, чтобы линия была серой.Помогите?Я опубликую решение, если узнаю, прежде чем кто-нибудь ответит.

...