gpt4 book ai didi

r - 根据 Shiny 中上传文件的数量动态创建绘图

转载 作者:行者123 更新时间:2023-12-01 13:50:37 25 4
gpt4 key购买 nike

我正在尝试开发一个 Shiny 的应用程序,用户可以在其中上传 csv 文件,这些文件随后由我的 R 脚本进行分析。因此,我想根据处理的文件数量显示动态数量的图(每个文件一个图)。

我找到了 this问题非常有帮助,但我不知道提前的最大地 block 数量。这是我尝试过的:

shinyServer(function(input, output) {

# Insert the right number of plot output objects into the web page
output$densityPlots <- renderUI({
plot_output_list <- lapply(1:length(input$file1$datapath), function(i) {
plotname <- paste("densityPlot", i, sep="")
plotOutput(plotname)
})

# Convert the list to a tagList - this is necessary for the list of items
# to display properly.
do.call(tagList, plot_output_list)
})

# Call renderPlot for each one. Plots are only actually generated when they
# are visible on the web page.
for (i in 1:length(input$file1$datapath)) {
# Need local so that each item gets its own number. Without it, the value
# of i in the renderPlot() will be the same across all instances, because
# of when the expression is evaluated.
local({
my_i <- i
plotname <- paste("densityPlot", my_i, sep="")
output[[plotname]] <- renderPlot({
plot(1)
})
})
}
}

但是,它给了我这个错误:

  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.)

我试图将 for 循环放在输出函数中,但是根本没有创建任何绘图。

最佳答案

我可以让它工作。必须使用电抗导体来创建图,如解释的那样here

shinyServer(function(input, output) {

createPlots <- reactive ({
numberOfFiles <- length(input$files$datapath)
for (i in 1:numberOfFiles) {
local({
my_i <- i
plotname <- paste("plot", my_i, sep="")
File <- read.csv(input$files$datapath[my_i])
output[[plotname]] <- renderPlot({
result <- runDensity(File, f)
plot(result$data, main=id, pch=19,cex=0.2, col= ColoursUsed[result$clusters])
})
})
}
})

output$densityPlot <- renderUI({

inFile <- input$files
if (is.null(inFile))
return(NULL)
createPlots()
numberOfFiles <- length(inFile$datapath)
plot_output_list <- lapply(1:numberOfFiles, function(i) {
plotname <- paste("plot", i, sep="")
plotOutput(plotname)
})

do.call(tagList, plot_output_list)
})

})

关于r - 根据 Shiny 中上传文件的数量动态创建绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com