首页 > 解决方案 > 将函数应用于 data.frame 的行

问题描述

我有 2 个不同的 data.frames 都包含用于计算的数据。其中一个包含按日期和时间索引的价格数据(例如 12.04.2019 12:00:00)。另一个包含按月份索引的不同参数(例如:第 1 个月的价格为 610,第 2 个月的相同价格变为 570 等)我正在使用闪亮制作一个可以获取 2 个文件的网络应用程序提到并进行必要的计算。我可以轻松地上传和阅读文件,在那里没有问题。但是在计算方面,我遇到了一些麻烦。首先,我的第一个按日期和时间索引的数据有 8760 行,每个原始数据都有计算所需的价格数据。另一方面,我的每月数据包含 12 行。在服务器中使用 renderUI 函数,

     output$gaz1 <- renderUI({
       numericInput("gaz1", "Ocak Ayında Gaz Kullanımı", value = aylıkdata()[1,4])
     })
    
     output$gaz2 <- renderUI({
       numericInput("gaz2", "Şubat Ayında Gaz Kullanımı", value = aylıkdata()[2,4])
     })
    
     output$gaz3 <- renderUI({
       numericInput("gaz3", "Mart Ayında Gaz Kullanımı", value = aylıkdata()[3,4])
     })
    
     output$gaz4 <- renderUI({
       numericInput("gaz4", "Nisan Ayında Gaz Kullanımı", value = aylıkdata()[4,4])
     })
    
     output$gaz5 <- renderUI({
       numericInput("gaz5", "Mayıs Ayında Gaz Kullanımı", value = aylıkdata()[5,4])
     })
    
     output$gaz6 <- renderUI({
       numericInput("gaz6", "Haziran Ayında Gaz Kullanımı", value = aylıkdata()[6,4])
     })
    
     output$gaz7 <- renderUI({
       numericInput("gaz7", "Temmuz Ayında Gaz Kullanımı", value = aylıkdata()[7,4])
     })
    
     output$gaz8 <- renderUI({
       numericInput("gaz8", "Ağustos Ayında Gaz Kullanımı", value = aylıkdata()[8,4])
     })
    
     output$gaz9 <- renderUI({
       numericInput("gaz9", "Eylül Ayında Gaz Kullanımı", value = aylıkdata()[9,4])
     })
    
     output$gaz10 <- renderUI({
       numericInput("gaz10", "Ekim Ayında Gaz Kullanımı", value = aylıkdata()[10,4])
     })
    
     output$gaz11 <- renderUI({
       numericInput("gaz11", "Kasım Ayında Gaz Kullanımı", value = aylıkdata()[11,4])
     })
    
     output$gaz12 <- renderUI({
       numericInput("gaz12", "Aralık Ayında Gaz Kullanımı", value = aylıkdata()[12,4])
     })
    
     output$fiyat1 <- renderUI({
       numericInput("fiyat1", "Ocak Ayında Gaz Fiyatı", value = aylıkdata()[1,2])
     })
    
     output$fiyat2 <- renderUI({
       numericInput("fiyat2", "Şubat Ayında Gaz Fiyatı", value = aylıkdata()[2,2])
     })
    
     output$fiyat3 <- renderUI({
       numericInput("fiyat3", "Mart Ayında Gaz Fiyatı", value = aylıkdata()[3,2])
     })
    
     output$fiyat4 <- renderUI({
       numericInput("fiyat4", "Nisan Ayında Gaz Fiyatı", value = aylıkdata()[4,2])
     })
    
     output$fiyat5 <- renderUI({
       numericInput("fiyat5", "Mayıs Ayında Gaz Fiyatı", value = aylıkdata()[5,2])
     })
    
     output$fiyat6 <- renderUI({
       numericInput("fiyat6", "Haziran Ayında Gaz Fiyatı", value = aylıkdata()[6,2])
     })
    
     output$fiyat7 <- renderUI({
       numericInput("fiyat7", "Temmuz Ayında Gaz Fiyatı", value = aylıkdata()[7,2])
     })
    
     output$fiyat8 <- renderUI({
       numericInput("fiyat8", "Ağustos Ayında Gaz Fiyatı", value = aylıkdata()[8,2])
     })
    
     output$fiyat9 <- renderUI({
       numericInput("fiyat9", "Eylül Ayında Gaz Fiyatı", value = aylıkdata()[9,2])
     })
    
     output$fiyat10 <- renderUI({
       numericInput("fiyat10", "Ekim Ayında Gaz Fiyatı", value = aylıkdata()[10,2])
     })
    
     output$fiyat11 <- renderUI({
       numericInput("fiyat11", "Kasım Ayında Gaz Fiyatı", value = aylıkdata()[11,2])
     })
    
     output$fiyat12 <- renderUI({
       numericInput("fiyat12", "Aralık Ayında Gaz Fiyatı", value = aylıkdata()[12,2])
     })
    
     output$bload1 <- renderUI({
       numericInput("bload1", "Ocak Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[1,3])
     })
    
     output$bload2 <- renderUI({
       numericInput("bload2", "Şubat Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[2,3])
     })
    
     output$bload3 <- renderUI({
       numericInput("bload3", "Mart Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[3,3])
     })
    
     output$bload4 <- renderUI({
       numericInput("bload4", "Nisan Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[4,3])
     })
    
     output$bload5 <- renderUI({
       numericInput("bload5", "Mayıs Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[5,3])
     })
    
     output$bload6 <- renderUI({
       numericInput("bload6", "Haziran Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[6,3])
     })
    
     output$bload7 <- renderUI({
       numericInput("bload7", "Temmuz Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[7,3])
     })
    
     output$bload8 <- renderUI({
       numericInput("bload8", "Ağustos Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[8,3])
     })
    
     output$bload9 <- renderUI({
       numericInput("bload9", "Eylül Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[9,3])
     })
    
     output$bload10 <- renderUI({
       numericInput("bload10", "Ekim Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[10,3])
     })
    
     output$bload11 <- renderUI({
       numericInput("bload11", "Kasım Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[11,3])
     })
    
     output$bload12 <- renderUI({
       numericInput("bload12", "Aralık Ayında Baseload Üretim Miktarı (MWh)", value = aylıkdata()[12,3])
     })

通过使用我从带有 renderUI 的每月数据中读取的输入,我想对 8760 行数据的每一行的每个价格元素进行计算。我写了一个“if, else if”语句,你可以在下面看到:

    fun <- function(x){
      if(isTRUE(month(usedata()$zaman) == 1) == TRUE){ x * input$bload1  - (input$gaz1*input$fiyat1) - input$ürtvergi*input$bload1}
      else if(isTRUE(month(usedata()$zaman)== 2) == TRUE){ x * input$bload2  - (input$gaz2*input$fiyat2) - input$ürtvergi*input$bload2}
      else if(isTRUE(month(usedata()$zaman) == 3) == TRUE){ x * input$bload3  - (input$gaz3*input$fiyat3) - input$ürtvergi*input$bload3}
      else if(isTRUE(month(usedata()$zaman) == 4) == TRUE){ x * input$bload4  - (input$gaz4*input$fiyat4) - input$ürtvergi*input$bload4}
      else if(isTRUE(month(usedata()$zaman) == 5) == TRUE){ x * input$bload5  - (input$gaz5*input$fiyat5) - input$ürtvergi*input$bload5}
      else if(isTRUE(month(usedata()$zaman) == 6) == TRUE){ x * input$bload6  - (input$gaz6*input$fiyat6) - input$ürtvergi*input$bload6}
      else if(isTRUE(month(usedata()$zaman) == 7) == TRUE){ x * input$bload7  - (input$gaz7*input$fiyat7) - input$ürtvergi*input$bload7}
      else if(isTRUE(month(usedata()$zaman) == 8) == TRUE){ x * input$bload8  - (input$gaz8*input$fiyat8) - input$ürtvergi*input$bload8}
      else if(isTRUE(month(usedata()$zaman) == 9) == TRUE){ x * input$bload9  - (input$gaz9*input$fiyat9) - input$ürtvergi*input$bload9}
      else if(isTRUE(month(usedata()$zaman) == 10) == TRUE){ x * input$bload10  - (input$gaz10*input$fiyat10) - input$ürtvergi*input$bload10}
      else if(isTRUE(month(usedata()$zaman) == 11) == TRUE){ x * input$bload11  - (input$gaz11*input$fiyat11) - input$ürtvergi*input$bload11}
      else if(isTRUE(month(usedata()$zaman) == 12) == TRUE){ x * input$bload12  - (input$gaz12*input$fiyat12) - input$ürtvergi*input$bload12}
      }

在 lapply 的帮助下,我想计算每一行并将结果作为 data.frame 获得。lapply 函数是这样的:

 Baseload <- reactive ({
      lapply(usedata()$PTF_sayı, fun)
      
      })

但是,我无法得到结果。你们有什么建议?期待看到你的建议。感谢您的进一步帮助。祝你今天过得愉快

标签: rfunctionshinylapply

解决方案


推荐阅读