【发布时间】:2021-06-23 21:28:55
【问题描述】:
我正在尝试迭代数据框 (values$df) 以便在每行应用一些函数,然后将输出绑定到另一个数据框 (cot$tarifas)。我使用了一个 for 循环,虽然屏幕上没有显示错误,但结果数据框中没有可用的数据 (cot$tarifas) 我没有明白为什么。
我在此处发布了我认为发生错误的代码摘录,但对于可重现的示例,我建议您下载 this folder 中的文件。您应该将代码中的路径更改为保存文件的路径,并将名为“file_to_upload”的文件加载到应用程序。代码有点长,这里就不贴了
cot <- reactiveValues()
observe({
cot$tarifas <- tibble(
Row = numeric(0)) %>%
mutate("Fondo" = "", "Region"= "", "Estado"="",
"Cultivo"= "", "Infraestructura"= "", "Riesgos"= "","Unidad de Riesgo"="",
"Subramo" = "", "Nivel de S.A." = numeric(0), "Deducible" = "", "Part. Perdida" = "", "Tarifa" = numeric(0))
})
proxyTable2 <- DT::dataTableProxy("tarifas")
output$envio <- renderDT({
DT::datatable(cot$tarifas[,-1],
rownames = FALSE,
escape = FALSE)
})
myTable2 <- isolate(cot$tarifas)
# I BELIEVE THERE IS SOMETHING WRONG IN THE FOLLOWING REACTIVE
eventReactive(input$continue,{
for (j in 1:dim(values$df)[1]) {
cotizacion <- busca_folios(fondo_edo(), cultivos(),values$df$Fondo[j], values$df$Region[j],values$df$Cultivo[j],
values$df$`Sistema de produccion`[j], values$df$`Seguro agricultura protegida`[j],
values$df$`Unidad de riesgo`[j], values$df$Riesgos[j], values$df$Deducible[j],
values$df$`Participacion a perdida`[j])
if(dim(cotizacion)[1] > 0){
myTable2 <- bind_rows(myTable2, tibble(Row = rep(1,3)) %>%
add_column(cotizacion))
}else{
cotizacion2 <- calculo(fondo_edo(),cultivos(),values$df[j,1],values$df$Region[j], values$df$Cultivo[j],
values$df$`Sistema de produccion`[j], values$df$`Seguro agricultura protegida`[j],
values$df$`Unidad de riesgo`[j], ordena_riesgos(values$df$Riesgos[j]),
separa_vector(values$df$Deducibles[j]), separa_vector(values$df$PPs[j]), values$df$Fondo[j])
myTable2 <- bind_rows(myTable2, tibble(Row = rep(1,3)) %>%
add_column(cotizacion2))
}
}
replaceData(proxyTable2, myTable2, resetPaging = FALSE)
cot$tarifas <- myTable2
})
扩展输出
非常感谢您的帮助,我真的很感激
【问题讨论】:
-
你有很多问题。您正在将反应器嵌套在反应器中。这没有任何意义。此外,您尝试在反应完成之前在 for 循环中使用它。接下来,您的功能似乎有问题。请确保它们在闪亮之外独立工作。请确保您发布MRE,以便有人可以帮助您。
-
嗨@YBS,谢谢你的评论。你对嵌套反应是正确的,它没有意义。我更新了代码,以便反应器内部没有反应器,但这不是问题。其次,我的功能在闪亮之外工作正常,它们没有问题,这就是我得到预期输出表的方式;)。所以问题是 col$tarifas 的值没有被新数据替换,我不明白为什么。问题一定在for循环中,但我不知道在哪里
-
我建议将
myTable2 <- bind_rows(myTable2, tibble(Row = rep(1,3)) %>% add_column(cotizacion))更改为 n % add_column(cotizacion))跨度> -
@YBS 非常感谢您的时间和帮助。我设法解决了我的问题:)