2017-04-11 76 views
-3

我想運行這個文件並繪製基於該值,我也用ui.R腳本來打開文件。如何確定R腳本不工作的原因?

library(shiny) 
library (flowCore) 
library(flowViz) 

shinyServer (function(input, output,server){ 
# trying to open a file 
ff <- input$file 
str(input$file) 
# to read a fcs file from a flow cytometer 
read.FCS("input$file", 
     transformation="linearize", 
     alter.names=FALSE, 
     column.pattern=NULL, 
     invert.pattern = FALSE, 
     decades=0, 
     ncdf=FALSE,      min.limit=NULL, 
     truncate_max_range = TRUE, 
     dataset=NULL, 
     emptyValue=TRUE) 

filedata <- reactive 
({ 
ff <- input$file 
str(input$file) 

       read.FCS("input$file", 
       transformation="linearize", 
       alter.names=FALSE, 
       column.pattern=NULL, 
       invert.pattern = FALSE, 
       decades=0, 
       ncdf=FALSE,      min.limit=NULL, 
       truncate_max_range = TRUE, 
       dataset=NULL, 
       emptyValue=TRUE) 
    output$distPlot <- renderPlot 
    ({ 
    lg <- rectangleGate("FS INT LIN"=c(350,700),"SS INT LIN"=c(50,250)) 

    lymp <- Subset(ff,lg) 
    # to compensate the values 
    bx<-biexponentialTransform() 
    bx1<-transformList(c("FL1 INT LOG","FL4 INT LOG"),bx) 
    bx2<-transformList(c("FL4 INT LOG","FL2 INT LOG"),bx) 
    bx3<-transformList(c("FL4 INT LOG","FL3 INT LOG"),bx) 
    CD45CD3<-transform(lymp,bx1) 
    CD3CD4<-transform(lymp,bx2) 
    CD3CD8<-transform(lymp,bx3) 

    # generate bins based on input$bins from ui.R 
    plot (ff, c("FS INT LIN","SS INT LIN"),xlim = c(100,1050),ylim=c(-10,900), 
    nbin=260) 
    xyplot(`SS INT LIN` ~ `FS INT LIN`,ff,filter=lg) 
    plot(lymp, c("FL1 INT LOG","FL2 INT LOG"),xlim = c(100,1050),ylim= 
    c(-10,900), nbin=260) 
    }) 
    # i want to run this app 
    }) 
    shinyApp(ui=ui,server=server) 
runApp("flowcyto", display.mode = "showcase") 
} 
) 

我曾嘗試使用我在這裏看到的幾篇文章,但似乎沒有工作。我正在努力重新創建一個基於流程細胞的自動化分析系統,第一步是調用文件並繪製相應的圖。 我得到的錯誤是:

Warning: Error in .getReactiveEnvironment()$currentContext: Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.) 
Stack trace (innermost first): 
    46: .getReactiveEnvironment()$currentContext 
    45: .subset2(x, "impl")$get 
    44: $.reactivevalues 
    43: $ [C:\Users\ramaswamynathan.v\Desktop\r script\flowcyto/server.R#14] 
    42: server [C:\Users\ramaswamynathan.v\Desktop\r script\flowcyto/server.R#14] 
    1: runApp 
Error in .getReactiveEnvironment()$currentContext() : 
    Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.) 

庫(閃亮)

# Define UI for application that draws a histogram 
shinyUI(fluidPage(

# Application title 
titlePanel("FLOW CYTOMETRY DATA"), 

titlePanel("Flow Cytometry"), 
# Upload File 
fileInput("file", label = h3("File input")), 

hr(), 
fluidRow(column(4, verbatimTextOutput("value"))) 

)) 我現在UI頁面只是從一個位置打開該文件,並用它來運行我的程序。

+3

我已經整理了一些問題,但總的來說,我認爲你是說這是「無法正常工作」。當它歸結時,這不是一個非常具體的錯誤報告,那麼你會更具體嗎?劇本是做什麼的?它運行嗎?它會產生錯誤的結果嗎?他們以何種方式錯了? (我已經修剪了關於多個情節的第二個問題,因爲這感覺像是一個無關的問題,可以研究,並且在你解決這個問題之後詢問是否有必要)。 – halfer

+0

該頁面加載並向我顯示以下錯誤,非常感謝您的幫助 –

回答

0

要確定爲什麼R腳本無法正常工作,只需要閱讀該錯誤或在瀏覽器中複製/粘貼,如果您真的不明白。

所以你的主要問題不應該是這個,你甚至不會說這是一個shiny問題,這是一個並非所有R用戶都知道的特定包。

對於你有光澤的問題,R是說你不尊重shinyreactive的方法。事實上,有很多,我在這裏糾正錯誤的:

library(shiny) 
library (flowCore) 
library(flowViz) 

server <- shinyServer (function(input, output){ 
# trying to open a file  
filedata <- reactive 
({ 
ff <- input$file 
return(read.FCS("input$file", 
       transformation="linearize", 
       alter.names=FALSE, 
       column.pattern=NULL, 
       invert.pattern = FALSE, 
       decades=0, 
       ncdf=FALSE,      min.limit=NULL, 
       truncate_max_range = TRUE, 
       dataset=NULL, 
       emptyValue=TRUE))}) 
    output$distPlot <- renderPlot 
    ({ 
    lg <- rectangleGate("FS INT LIN"=c(350,700),"SS INT LIN"=c(50,250)) 

    lymp <- Subset(filedata(),lg) 
    # to compensate the values 
    bx<-biexponentialTransform() 
    bx1<-transformList(c("FL1 INT LOG","FL4 INT LOG"),bx) 
    bx2<-transformList(c("FL4 INT LOG","FL2 INT LOG"),bx) 
    bx3<-transformList(c("FL4 INT LOG","FL3 INT LOG"),bx) 
    CD45CD3<-transform(lymp,bx1) 
    CD3CD4<-transform(lymp,bx2) 
    CD3CD8<-transform(lymp,bx3) 

    # generate bins based on input$bins from ui.R 
    plot (filedata(), c("FS INT LIN","SS INT LIN"),xlim = c(100,1050),ylim=c(-10,900), 
    nbin=260) 
    xyplot(`SS INT LIN` ~ `FS INT LIN`,ff,filter=lg) 
    plot(lymp, c("FL1 INT LOG","FL2 INT LOG"),xlim = c(100,1050),ylim= 
    c(-10,900), nbin=260) 
    }) 
    # i want to run this app 
    }) 
     shinyApp(ui=ui,server=server) 

但問題是,有很多其他的混亂,我不能正確。例如在你的renderPlot你正在做三個地塊...

對於你的錯誤,你通過servershinyServer這是絕對荒謬的。您還在reactive中包含renderPlot,您可以在服務器部分中撥打shinyApp。你甚至有一個ui部分?如果是的話,你應該把它添加到你的文章,因爲我想它包含錯誤。我不能確定修正是否詳盡,因爲如果沒有ui部分它不能被嘗試。

我強烈建議你看看shiny homepage

+0

非常感謝,我只是想獲得它的一個竅門我一直在看主頁並感到困惑。對不起,困擾你 –

+0

我不困擾:)嘗試做一些小apllications在第一個地方,以更多地瞭解不直觀的閃亮方法。 – Smich7

+0

謝謝,我一直在最後一分鐘推這個,所以我太困惑了 –