2
我在R中的“visNetwork”包的新用户,我想知道的方式来改变长data.frame成visnetworkR:改变一个数据帧到visnetwork
我有这个那种数据框中的:
data<-data.frame(link=c("A","A","B","B","C","C","D","D","E","E"),node=c("Alpha","Beta","Gamma","Delta","Alpha","Delta","Gamma","Beta","Alpha","Beta"),
sign=c(1,-1))
link node sign
1 A Alpha 1
2 A Beta -1
3 B Gamma 1
4 B Delta -1
5 C Alpha 1
6 C Delta -1
7 D Gamma 1
8 D Beta -1
9 E Alpha 1
10 E Beta -1
我的目标是把它在一个“visnetwork”像这样的:
library(visNetwork)
nodes <- data.frame(id = c("Alpha","Beta","Gamma","Delta"),
label=c("Alpha","Beta","Gamma","Delta"))
edges <- data.frame(from = c("Alpha","Beta","Delta","Delta"), to = c("Beta","Gamma","Gamma","Alpha"),
label=c("A+E","D","B","C"),
arrows="middle")
visNetwork(nodes, edges) %>%
visOptions(nodesIdSelection = TRUE)
不知道如何做呢?
我所到目前为止已经试过:
nodes <- data.frame(id=c(distinct(data,as.character(node))),
label=c(distinct(data,as.character(node))))
colnames(nodes)[1]<-"id"
colnames(nodes)[2]<-"label"
edges<-tbl_df(data) %>%
group_by(link) %>%
arrange(node) %>%
summarise(nodes = paste(node, collapse =",")) %>%
arrange(nodes) %>%
separate(nodes,c("from","to"),sep=",") %>%
mutate(label=as.character(link)) %>%
mutate(arrows="middle")
visNetwork(nodes, edges)