0
#loading libraries
library(RedditExtractoR)
library(visNetwork)
library(dplyr)

#data
c <- reddit_content("https://www.reddit.com/r/ethereum/comments/g5p6m6/mycrypto_integrates_defizap_to_earn_interest_on/")
v <- user_network(c)

#define nodes and edges
nodes <- v$nodes %>% rename("title"=.data$user)
edges <- v$edges %>% rename("width"=.data$weight) %>% mutate(arrows="to")

#create column with urls
nodes$url <- paste0("https://www.reddit.com/user/", nodes$title)

#network
visNetwork(nodes = nodes, edges = edges) #%>% visEvents(click = ???)

当用户单击节点时,我想让 url 在新的浏览器窗口中打开。我该如何做到这一点?提前致谢

4

2 回答 2

1

我在这里从 bthieurmel找到了一个有用的答案。有人建议在标题中使用 HTML 嵌入。因此,可能的解决方案可能如下所示:

nodes <- data.frame(id = 1:3, title = c(
   '<a target="_blank" href = "http://www.google.com">Visit Google</a>',
   '<a target="_blank" href = "http://www.w3schools.com">VisitW3SC</a>',
   '<a target="_blank" href = "http://www.stackoverflow.com">Visit stackoverflow </a>'))

edges <- data.frame(from = c(1,2), to = c(1,3))

visNetwork(nodes, edges)
于 2020-12-20T00:59:20.960 回答
0

我花了一些时间来尝试一些东西,这似乎有效。当有人在画布的其他区域单击时,我使用selectNode而不是click避免打开 URL。

#network
visNetwork(nodes = nodes, edges = edges) %>% 
  visEvents(selectNode = 
  "function(params) {
    var nodeID = params.nodes[0];
    var url = this.body.nodes[nodeID].options.url;
    window.open(url, '_blank');
   }")
于 2020-05-12T22:42:58.113 回答