将Pajek文件转换为CSV并在R Shiny中显示它

时间:2015-07-09 08:33:47

标签: r csv shiny igraph

有谁知道如何读取有光泽的pajek文件,然后找到每个顶点的度数并按降序将其输出到CSV文件?

这是我要导入的Pajek文件,并将学位导出为CSV。

在R中,我知道如何正常编码:

#read the pajek file in igraph
reponetwork <- read.graph("network.net", format = "pajek")

#Inspect the data:
degree(reponetwork)
sort(degree(reponetwork), decreasing = TRUE)

但我不知道如何在Shiny中做到这一点:

这是我到目前为止所做的:

ui.R

shinyUI(fluidPage(
  titlePanel("Finding most influential vertex in a network"),

  sidebarLayout(
    sidebarPanel(

     fileInput("graph", label = h4("Pajek file")),

      downloadButton('downloadData', 'Download')

    ),
    mainPanel( tabsetPanel(type = "tabs", 
                           tabPanel("Table", tableOutput("view")) 

                           ) 

               )

  )
))

server.R

library(igraph)
options(shiny.maxRequestSize=100*1024^2) 

shinyServer(
  function(input, output) {

    filedata <- reactive({
      inFile = input$graph
      if (!is.null(inFile))
      data <<- read.graph(file=inFile$datapath, format="pajek")
    })


   output$view <- renderTable({
  if(is.null(filedata())) {
    return()
  }
  df <- filedata()
  vorder <-sort(degree(df), decreasing=TRUE)
  DF <- data.frame(ID=V(df)[vorder], degree=degree(df)[vorder])
})

    output$downloadData <- downloadHandler(
  filename = function() {
    paste(input$graph, '.csv', sep='')
  },

  # This function should write data to a file given to it by
  # the argument 'file'.
  content = function(file) {
  write.csv(DF, file)
      } 

    )
      }) 

我不确定如何从filedata()方法中取出文件,然后读取图形,然后取pajek文件的度数,然后将其输出到CSV文件中,其中最高度位于顶部,最低位于底部

并且所需的CSV文件列应具有:1。顶点id 2.该顶点的度

1 个答案:

答案 0 :(得分:0)

我可能会误读您的脚本,但我认为您需要将所有数据提取和操作移出您服务器的shinyServer()部分。\ n&#39;归档到它之前的空格。通常,shinyServer()插槽中唯一的内容是在应用中呈现反应元素的代码。这些反应元素的所有准备工作都应在调用shinyServer()之前完成。有关该&#39; server.R&#39;的推荐结构的详情,请参阅this part of the Shiny tutorial。脚本。