Я относительно новичок в R, и мне интересно, как создать реактивный igraph в блестящем. Я пытаюсь создать блестящее приложение, которое анализирует данные Airbnb. В целом, я хочу визуализировать двудольную сеть, которая показывает связь между list_id квартиры и reviewer_id рецензента в интерактивном режиме.
Я попытался построить график на реактивном фильтре, который фильтрует данные на основе данных. по соседству (вход из пользовательского интерфейса). Сам график должен показывать связи между перечислением_данных на основе общих reviewer_ids (т. Е. Листинг A связан с листингом B, если у них есть хотя бы один общий рецензент).
Код, который у меня есть на данный момент:
#---------------UI----------
ui <- fluidPage(
sidebarLayout(position = "right",
sidebarPanel(h3("Input Parameters"),
selectInput("neighborhood.selection", "Select the neighborhood you want to display",
c("Manhattan", "Brooklyn", "Queens", "Staten Island",
"Bronx")),
#textOutput("o.neighborhood.selection"),
#selectInput("vertex.selection", "Select the Vertex you want to display",
#c("Reviewer ID" = 1, "Listing ID" = 2)),
),
mainPanel(h2("Overall Network Graph"),
plotOutput("o.big.network")
)
),
)
#-----------server----------
library(igraph)
library(shiny)
library(data.table)
library(rsconnect)
library(dplyr)
dt.merged <- readRDS("dt.merged.final.rds")
dt.merged$reviewer_id <- paste0("0", dt.merged$reviewer_id)
dt.merged <- dt.merged[1:500]
server <- function(input, output) {
dt.merged.reactive <- reactive({
req(input$neighborhood.selection)
filter(dt.merged,neighbourhood_group_cleansed %in% input$neighborhood.selection)
})
all.listings <- dt.merged.reactive()[, list(name=unique(listing_id), type=TRUE)]
all.reviewers <- dt.merged.reactive()[, list(name=unique(reviewer_id), type=FALSE)]
all.vertices <- list(all.listings,all.reviewers)
output$o.big.network <- renderPlot({
# Creating the graph
g <- graph.data.frame(dt.merged.reactive()[, list(listing_id, reviewer_id)], directed=FALSE, vertices= all.vertices)
})
}