条件选择DataTables闪亮不起作用

时间:2016-01-11 21:42:29

标签: r shiny

当点击DataTable中的一行时,我希望加载一个不同面板中的图像但是,我一直收到错误而不是。

**Warning in widgetFunc() :
renderDataTable ignores ... arguments when expr yields a datatable  object; see ?renderDataTable
Error in basename(file) : a character vector argument expected**


output$image1 <- renderImage({
s = input$table1_rows_selected
if (length(s))   list(src=paste0(imagePath,"/peak",s,".png"))},deleteFile=FALSE)

然而,下面的功能可以使用

output$image1 <- renderImage({list(src=paste0(imagePath,"/peak1.png"))},deleteFile=FALSE)

以下是代码的完整版本:

server.R 
writeLines("Please select ANY image")
imagePath = file.choose()

# break up the character vector, delete the last word
imagePath = dirname(imagePath)

server = function(input, output) {
output$table1 = renderDataTable({
# the peak table 
datatable(peaksTable,
          # when rowname is false each row does not have a numeric # associated with it 
          rownames = FALSE,
          # specify the name of the column headers
          colnames = c("Seqnames", "Start", "End","Width","Strand","P","Q","Effectsize",
                       "FDR","Keep","Gene_name","Gene.nearest","Count","Count.pred",
                       "Coverage","Local.mut.density","Base.context.GC","Tn.Context.TpC",
                       "Tn.context.CpG","Dnase","Activechrom","Hetchrom","Rept"))

},
escape = FALSE) 

# render an Image based on which rows are clicked on.   
output$image1 <- renderImage({
s = input$table1_rows_selected
if (length(s)) list(src=paste0(imagePath,"/peak",s,".png"))},deleteFile=FALSE)

ui.R

shinyUI(navbarPage(

title = " Nanoproject",

# first panel , create table of the peaksTable dataframe 
tabPanel('Peak Table' , 
       dataTableOutput('table1')),

# second panel
tabPanel('Peak Images' , 

       imageOutput("image1",width = "auto",height = "auto")
))

我不知道我哪里出错了。

1 个答案:

答案 0 :(得分:1)

就像它已被指出的那样,没有可重复的例子,它很难提供帮助。

我的猜测是你的代码没有处理没有选择行的情况。如果这是真的,这样的事情应该可以解决问题:

server.R

output$image1 <- renderImage({ 
  s <- input$table1_rows_selected
  # print(s)
  if(is.null(s)) return(NULL)
  list(src = paste0(imagePath,"/peak",s,".png"))
}, deleteFile=FALSE)

打印s可以帮助您了解更好的事情。