gpt4 book ai didi

r - R-Shiny 中的自动多文件下载

转载 作者:行者123 更新时间:2023-12-04 09:17:03 25 4
gpt4 key购买 nike

我想弄清楚如何获得 data.frame对自身进行子集化,然后为每个子集编写一个 .csv 文件。我正在写一个 shiny应用程序将为不同的仪器生成模板文件,我需要能够为每个批次/板/任何东西获取一个文件。显然,我们可以进行手动排序,但这违背了目的。

例如,假设我有一个 data.frame有 4 列命名为 1) PlateID、2) SampleName、3) Well 和 4) Comments,我想按 PlateID 进行子集化,以便每个单独的板都有自己的文件。

output$multiDownload <- renderText({
#templateData() just loads the data, nothing special;
#If you wanna see it let me know, but I think it's bulky
tempData <- templateData()
if(is.null(tempData)){return(NULL)}

#If there are more than one plate, subset by plate ID and write each file
if(max(tempData$PlateID) > 1){
for(i in 1:max(tempData$PlateID)){
tempSubsetForWrite <- subset(tempData, tempData$PlateID == i, select = c("names", "well", "comments"))
write.csv(tempSubsetForWrite, file = paste0("file ", i, " of ", max(tempData$PlateID), row.names = FALSE)
}
} else {
write.csv(tempData, file = "file", row.names = FALSE)
}
})

所以我想添加一些功能,但我不知道如何处理它们。首先,我想更好地控制数据的写入位置。我希望它与我的输入文件进入同一个文件,但我不确定如何强制执行此操作?我尝试做类似的事情:
inFile <- input$templateGenerationFile
write.csv(tempData, paste0(inFile$datapath, "/file ", i, " of ", max(tempData$PlateID))

但在 inFile$datapath似乎是生成的临时文件夹/文件,而不是原始文件的直接链接!

另外,我想写一些像 downloadHandler 一样的东西。从某种意义上说,有一个按钮可以在单击时下载文件,但我认为我不能在这种情况下使用它,因为我正在编写多个文件。如果我错了,请告诉我,因为这会让生活更轻松。我想我会使用 actionButton和一个计数器变量,这样计数器是按钮的值 + 1,直到按钮被激活,在这种情况下,它们在函数结束之前是相等的。显然我会有一个处理其余部分的条件,但这是微不足道的,所以让我们专注于文件子集并下载!

谢谢!

最佳答案

zip()对我不起作用,但使用 tar 很容易功能..

      output$downloadData <- downloadHandler(
filename = function() { paste("filesintar", '.tar', sep='') },
content = function(file) {
tar(file,"./dirwheremyfilesare") # no inlcuye rutas hasta raíz.
}
)

希望这会有所帮助。
我试试 zip而不是 tar但我有一个错误:
        zip(file, paste("./dirwheremyfilesare/",dir("./dirwheremyfilesare"),sep=""))

感谢你。

安东尼奥·M。

关于r - R-Shiny 中的自动多文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862151/

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