外部功能,暗淡与物体长度不符;通过顶点隶属关系着色边缘

时间:2018-09-21 03:11:02

标签: r outer-join ggally

我正在尝试使用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] do not match the length of object [xx]" error in using R function `outer`

此链接使我认为ifelse并未按照我的预期做魔术。实际上,我认为我使用了非常错误的语法来完成我想做的事情。

我想要的是根据两个连接节点的分组对边缘进行着色。如果它们属于不同的组,那么我希望该行为灰色。救命?如果在有人回答之前找到了解决方案,我会把它发布出来。

0 个答案:

没有答案