2017-07-28 88 views
0

中的元素如果我把一些元素是我需要他們進一步下來,我怎麼能記得他們的代碼反應功能,例如:獲得了反應功能

 library(shiny) 
library(data.table) 
library(formattable) 
library(tables) 
ui <- fluidPage(
     fileInput(inputId = "File",label = "Upload file...",accept=c("zip","text")), 
     tableOutput("AEP") 
) 


server <- function(input, output){ 
    options(shiny.maxRequestSize=50*1024^2) 
    #output$AEP <- renderTable({ 
    data1 <- reactive({ 
    infile=input$File 

    if (is.null(infile)) 
     return(NULL) 

    report_list <- c("Park result.txt", 
        "Park result minus", 
        "Park result plus") 
    temp_files <- unzip(infile$datapath) 
    temp_files <- temp_files[grepl(paste(report_list, collapse = "|"), temp_files)] 

    T=length(temp_files) 
    t1=3*c(1:(T/3)) 

    t2=c(1:T) 
    t2=t2[-t1] 
    p=c();for(i in 1:T){p[[i]]=c()} 
    for(i in 1:(length(t1))){p[[t1[i]]]=read.table(temp_files[t1[i]],skip=1,sep=";")} 
    for(i in 1:(length(t2))){p[[t2[i]]]=read.table(temp_files[t2[i]],skip=2,sep=";")} 
    Installed_Power=v=park=c();for(i in 1:T/3){park[[i]]=v[[i]]=c()} 

    for(i in 1:(T/3)){ 
     park[[i]]=as.matrix(cbind(p[[1+(i-1)*3]],p[[2+(i-1)*3]],p[[3+(i-1)*3]])) 
    } 
    #Power output : 
    y=c();for(i in 1:T/3){y[[i]]=c()} 
    power=Ave.A=Ave.k=AD=c() 
    for (i in 1:(T/3)){ 


     y[[i]]=park[[i]][,153][3:length(park[[i]][,153])] 
     y[[i]]=gsub("\\,","",y[[i]]) 
     y[[i]]=as.numeric(y[[i]]) 
     power[i]=sum(y[[i]])/1000 
     Ave.A[i]=mean(as.numeric(park[[i]][3:length(park[[i]][,162]),162])) 
     Ave.k[i]=mean(as.numeric(park[[i]][3:length(park[[i]][,163]),163])) 
     AD[i]=mean(as.numeric(park[[i]][3:length(park[[i]][,200]),200])) 
    } 
    }) 
    output$AEP <- renderTable({ 
    df <- data1() 
    df <-as.data.frame(df) 
    AEP=data.table(df$power,df$Ave.k,df$Ave.A,df$AD) 
    }) 

} 
shinyApp(ui=ui, server=server) 

現在我有reac(),作爲反應功能。如果在另一個反應或渲染功能,我只需要T值?我可以通過$來訪問它,如reac()$ T? 將上述代碼返回錯誤:

Warning: Error in data.table: column or argument 1 is NULL 

代碼工作。如果我不使用的活性功能,只是把渲染功能,而不是!我這樣做是因爲我最終需要將結果下載爲pdf文件。 (AEP表) 如果我想在R markdown中使用AEP表,我應該怎麼做?

回答

0

您可以始終將reac()作爲另一個被動函數或渲染函數中的數據框來定義。

嘗試:

output$table <- renderTable({ 
    df <- reac() 
    df <- as.data.frame(df) 
    df$T 
}) 
+0

它不工作:警告:data.table:列或參數1中的錯誤是NULL –

1

此再現的示例給出了在反應性的數據幀可以像在一個閃亮應用的任何其他數據幀進行訪問。如果沒有能夠重現這個問題,很難說你的應用真的發生了什麼。

library(shiny) 

ui <- fluidPage(
    titlePanel("Test Reactive Dataframe"), 
    mainPanel(textInput("test", "EnterTextHere"), 
      tableOutput("test1"), 
      tableOutput("test2") 
) 
) 

server <- function(input, output) { 

    df1 <- reactive({ 
    data.frame(id = 1:length(input$test), input = input$test) 
    }) 

    output$test1 <- renderTable({ 
    df1()$input 
    }) 

    output$test2 <- renderTable({ 
    df1()[,1:2] 
    }) 

} 

shinyApp(ui = ui, server = server)