2016-06-20 6 views
1

Ich muss Benutzern erlauben, eine Datei hochzuladen, um ein Netzwerk zu definieren, das in einer App gerendert wird.rcytoscapejs: verschiedene Parameter - 'renderGraph' Funktion nicht verfügbar

ich die Parameter verändern möchte eine interaktive glänzende Grafik neu zu machen, die über einen speziellen glänzend Github Paket- „rcytoscapejs“ eingesetzt wird: https://github.com/cytoscape/r-cytoscape.js/tree/master

Während die Grafik setzt in Ordnung, mein Problem ist, dass es nur von der Benutzeroberfläche bereitgestellt werden, unabhängig vom Server ...

g<-createCytoscapeJsNetwork(nodeData = nodes, edgeData = edge) 
#ui.R 
dashboardBody(
    sliderInput(inputId="num", label="Choose coef", value=2, min=1, max=3), 
    rcytoscapejs(g$nodes, g$edges) 
) 

wie Sie dies ist völlig unparteiisch vom Server sehen, wenn ich versuche, den Code innerhalb des Servers über so etwas zu implementieren:

Ich habe versucht, „graphOutput“ und „renderGraph“ aber die Funktionen scheinen nicht zu existieren ...

Ich versuchte, die „renderGraph“ von Github herunterladen.

devtools::install_github("mfontcada/renderGraph"); 
Downloading GitHub repo mfontcada/[email protected] 
from URL https://api.github.com/repos/mfontcada/renderGraph/zipball/master 
Error: Does not appear to be an R package (no DESCRIPTION) 

Aber das Paket ist in der Version 0.1 und ist seit 2014 nicht mehr aktualisiert ...

So letztlich meine Frage ist, wie kann ich die Parameter etwas variieren, die in der „ui.R wohnt "Code ???

So etwas wie die folgenden, (Code-Datei-Upload entnommen aus: http://shiny.rstudio.com/gallery/file-upload.html):

server <- function(input, output) { 
    dataInput <- eventReactive(input$choices, { 
    inFile <- input$file1 
    if (is.null(inFile)) 
     return(NULL) 
     read.csv(inFile$datapath, header = input$header, sep = input$sep, quote = input$quote) 
    createCytoscapeJsNetwork(nodeData = nodes, edgeData = edge) 
    }) 
    } 

#ui.R 
actionButton("choices", "Run analyses"), 
fileInput('file1', 'Choose file to upload', 
      accept = c(
      'text/csv', 
      'text/comma-separated-values', 
      'text/tab-separated-values', 
      'text/plain', 
      '.csv', 
      '.tsv' 
     ), 
rcytoscapejs(dataInput()$nodes, dataInput()$edges), 

Dies natürlich gibt einen Fehler als ein Parameter nicht innerhalb des ui.R Skript als solche variieren kann ....

Haben Sie Tipps, wie Sie das umgehen können?

Antwort

1

sortiert sie mit den Funktionen renderRcytoscapejs für den Server und rcytoscapejsOutput für die UI auch aus muss die Klasse der Datendatei erhalten mit read.csv mit Isolat() in ein reaktionsfähiges Wert gelesen wird:

library(shinydashboard) 
library(rcytoscapejs) 
p1<-cor(t(E.rna_small[1:20,1:20]),use="p") #correlations taken from sample of matrix 
library(graph) #as per P Shannon's help must convert to way that is compatible with RCyjs 
library(RCyjs) 
library(igraph) 
g<-igraph.to.graphNEL(simplify(graph_from_adjacency_matrix(p1, weighted=T))) 
edge<-as.data.frame(get.edgelist(simplify(graph_from_adjacency_matrix(p1, weighted=T)))) 
colnames(edge)<-c("source", "target") 
nodes<-cbind(id=colnames(p1), name=rownames(p1)) 
class(nodes) 
nodes<-as.data.frame(nodes) 
b<-createCytoscapeJsNetwork(nodeData = nodes, edgeData = edge) 
uiactual <- dashboardPage(
    dashboardHeader(title="zoom"), 
    dashboardSidebar(menuItem(
        checkboxInput('header', 'Header', TRUE), 
        radioButtons('sep', 'Separator', 
           c(Comma=',', 
            Semicolon=';', 
            Tab='\t') 
           )), 

        menuItem(p('If you want a sample .csv or .tsv file to upload,', 
        'you can first download the sample', 
        a(href = 'mtcars.csv', 'mtcars.csv'), 'or', 
        a(href = 'pressure.tsv', 'pressure.tsv'), 
        'files, and then try uploading them.' 
        ))), 
    dashboardBody(
    sliderInput(inputId="num", label="Choose coef", value=2, min=1, max=3), 
    rcytoscapejsOutput("g3plot"), 
    fileInput('file1', 'Choose file to upload', 
       accept = c(
       'text/csv', 
       'text/comma-separated-values', 
       'text/tab-separated-values', 
       'text/plain', 
       '.csv', 
       '.tsv' 
      ) 
    ) 
) 
) 

    serveractual <- function(input, output) { 
    g3 <- reactive({ 
     inFile <- input$file1 
     if (is.null(inFile)) 
     return(NULL) 

     isolate(t<-read.table(inFile$datapath, header = T, 
          sep = "\t")) 
     #t<-for(i in colnames(t)){ 
     # as.numeric(t[,i]) 
     #} 

     p1<-cor(t(t),use="p") #correlations taken from sample of matrix 
     simplify(graph_from_adjacency_matrix(p1, weighted=T)) 
     edge<-as.data.frame(get.edgelist(simplify(graph_from_adjacency_matrix(p1, weighted=T)))) 
     colnames(edge)<-c("source", "target") 
     nodes<-cbind(id=colnames(p1), name=rownames(p1)) 
     nodes<-as.data.frame(nodes) 
     createCytoscapeJsNetwork(nodeData = nodes, edgeData = edge) 
    }) 


    output$g3plot = renderRcytoscapejs({ 
     rcytoscapejs(g3()$nodes, g3()$edges) 
    }) 

    } 
shinyApp(uiactual, serveractual) 
Verwandte Themen