有谁知道如何读取有光泽的pajek文件,然后找到每个顶点的程度并按降序将其输出到CSV文件?我不确定如何从filedata()方法中获取文件,然后读取图形,然后取pajek文件的度数,然后将其输出为CSV文件,其中最高度位于顶部和最低位置在底部。
Here's我要导入的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")
return(data)
})
#get the pajek file, get the degree from it using degree(),
#display the output(only degree with respect to vertex ids) in the view tab panel
output$view <- renderTable({
if(is.null(filedata())) {
return()
}
df <- filedata()
vorder <-sort(degree(df), decreasing=TRUE)
DF <- data.frame(ID=as.numeric(V(df)[vorder]), degree=degree(df)[vorder])
})
output$downloadData <- downloadHandler(
filename = function() {
paste(input$graph, '.csv', sep='')
},
# Not sure how to write to csv file
content = function(file) {
write.csv(DF, file)
}
)
})
并且所需的CSV文件列应具有:1。顶点ID 2.该顶点的度
答案 0 :(得分:0)
我不知道你曾尝试过什么或者什么对你不起作用,但是应该这样做:
g <-read.graph(file=inFile$datapath, format='pajek')
vorder <- order(degree(g), decreasing=TRUE)
DF <- data.frame(ID=as.numeric(V(g)[vorder]), degree=degree(g)[vorder])
write.csv(DF, file='foo.txt')