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