r - 我可以在闪亮的同一个表格单元格中放置多个下载链接吗?
问题描述
我正在使用闪亮的,我无法在同一个表格单元格中插入多个链接。每个链接都应允许用户下载在计算机上找到的本地文件。这是我的意思的图像: 带有链接的表
对于第 2、3 和 4 列,它们的行最多只包含 1 个链接,它工作得很好;当我点击超链接时,我可以从我的电脑下载相应的文件。但是,对于在每个单元格中包含多个超链接的第 5 列,我无法这样做。单击链接不会返回任何内容;没有下载文件(但我没有收到错误消息)。
这是我用于第 5 列的代码:
lapply(1:nrow(table), function(i) {
if (table[i,5]!="No panels")
{
panels=strsplit(table[i,5], "<br>")
panels=panels$`Gene panel`
for (j in 1:length(panels)){
output[[paste0("downloadData", i, j, 4)]] <- downloadHandler( # as opposed to before, I added here another variable 'j' in the name of the output variable to differentiate between the different panels for each sample name
filename=paste("./Gene_panel/", table[i,1], "_", panels[j], sep=""),
content = function(file) {
file.copy(paste("./Gene_panel/", table[i,1], "_", panels[j], sep=""), file)
}
)}}
}
)
output$hidden_downloads_panel <- renderUI(
lapply(1:nrow(table), function(i) {
if (table[i,5]!="No panels"){
panels=strsplit(table[i,5], "<br>")
panels=panels$`Gene panel`
for (j in 1:length(panels)){
downloadLink(paste0("downloadData", i, j, 4), "download", class = "hiddenLink") # also added 'j' here
}
}
}))
output$table <- renderDataTable({ # here, it's the same as before but I just added the last '%>% mutate' to accommodate the last column 'Gene panel'
table=as.data.frame(table)%>%
mutate("Quality Control" = lapply(1:n(),
function(i)
{ if (table[i,2]=="Yes"){
paste0('<a href="#" onClick=document.getElementById("downloadData',i, 1,'").click() >Yes</a>')}
else
paste0("No")}
))%>% mutate("BWA" = lapply(1:n(),
function(i)
{ if (table[i,3]=="Yes"){
paste0('<a href="#" onClick=document.getElementById("downloadData',i,2, '").click() >Yes</a>')}
else
paste0("No")}))%>% mutate("Annotation" = lapply(1:n(),
function(i)
{ if (table[i,4]=="Yes"){
paste0('<a href="#" onClick=document.getElementById("downloadData',i,3, '").click() >Yes</a>')}
else
paste0("No")}))%>% mutate("Gene panel" = lapply(1:n(),
function(i)
if (table[i,5]!="No panels"){
panels=strsplit(table[i,5], "<br>")
panels=panels$`Gene panel`
list=c()
for (j in 1:length(panels))
{
list=append(list,paste0('<a href="#" onClick=document.getElementById("downloadData', i, j, 4, '").click() >', panels[j], '</a>'))
}
paste0(list, collapse="<br>")
}
else
paste0("No panels")
))
table
}, escape = F)
如果缺少某些内容或您需要进一步澄清,我在 rstudio 论坛上更详细地询问了这个问题(使用我的代码)(虽然没有收到答案):https ://community.rstudio.com/t/multiple -链接在同一个表单元格/110558
先感谢您。
解决方案
我认为这应该通过lapply
在renderUI
部分中替换 for 循环并生成downloadLink
as a来做到这一点tagList
:
output$hidden_downloads_panel <- renderUI({
outputlist <- lapply(1:nrow(table), function(i) {
if (table[i,5]!="No panels"){
panels=strsplit(table[i,5], "<br>")
panels=panels[[1]]
lapply(1:length(panels), function(j){
tagList(
downloadLink(paste0("downloadData", i, j, 4), "download", class = "hiddenLink")
)
})
}
})
})
并将downloadHandler
输出放在本地环境中以使用 for 循环生成唯一 ID:
lapply(1:nrow(table), function(i) {
if (table[i,5]!="No panels")
{
panels=strsplit(table[i,5], "<br>")
panels=panels[[1]]
for (j in 1:length(panels)){
local({
my_j = j
output[[paste0("downloadData", i, my_j, 4)]] <- downloadHandler(
filename=paste("./Gene_panel/", table[i,1], "_", panels[my_j], sep=""),
content = function(file) {
file.copy(paste("./Gene_panel/", table[i,1], "_", panels[my_j], sep=""), file)
}
)
})
}}
})
我必须将您的panels=panels$"Gene panel"
行替换panels=panels[[1]]
为使其与我的测试数据框一起使用,我能够“显示”您的示例数据的 6 个隐藏链接。
推荐阅读
- eclipse - 将eclipse安装迁移到另一台计算机的最佳方法
- azure - 将文件保存在 Azure 应用服务上并使其可从外部访问
- python - 如何绘制两个文档的两个向量之间的余弦角。(python中的余弦相似度概念)
- python - 坐标排序和按坐标位置分类,而不是按分数分类
- javascript - 获取 CORS 策略:没有“Access-Control-Allow-Origin”错误
- angular - 如何在子组件中使用角度动画
- python - Django-Filter FilterSet 仅显示用户生成的对象
- android - Android:创建相同的视图以在 PdfDocument 的画布上进行打印以进行打印
- reactjs - 是否有必要为每个动作创建减速器?
- angular - 如何设计有棱角的材料?