【发布时间】:2015-07-09 08:33:46
【问题描述】:
有谁知道如何在shiny中读取pajek文件,然后找到每个顶点的度数并按降序输出到CSV文件?
这是我要导入并将学位导出为 CSV 的 Pajek 文件。
在 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"))
)
)
)
))
服务器.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. 该顶点的度数
【问题讨论】: