te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>r - Adding DT datatable to slickR carousel - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

r - Adding DT datatable to slickR carousel - Stack Overflow

programmeradmin5浏览0评论

I am interested in rendering a DT datatable inside slickR's carousel. My actual use case will have an image followed by a table. Here's a quick example of what I am trying to do (code produces an empty shiny app though):

library(shiny)
library(dplyr)
library(purrr)
library(DT)
library(slickR)

ui <- fluidPage(
  slickROutput("iris_slickr")
)

server <- function(input, output) {
  
  output$iris_slickr <- renderSlickR({
    
    iris_split <- iris %>% 
      split(f = ~Species) 
    
    slickR(
      map(
        names(iris_split)
        ,~datatable(iris_split[[.x]])
      )
    )
    
  })
  
}

shinyApp(ui = ui, server = server)

In the example above, I would like a slide per iris species. I believe the reason why this doesn't work is because DT has its own render functions, and I am not sure how to incorporate both renderSlickR and renderDT if that's even possible. I know I could simply use datatable's pagination for this, but as mentioned my use case will also have an image above each table e.g. iris species image.

I am interested in rendering a DT datatable inside slickR's carousel. My actual use case will have an image followed by a table. Here's a quick example of what I am trying to do (code produces an empty shiny app though):

library(shiny)
library(dplyr)
library(purrr)
library(DT)
library(slickR)

ui <- fluidPage(
  slickROutput("iris_slickr")
)

server <- function(input, output) {
  
  output$iris_slickr <- renderSlickR({
    
    iris_split <- iris %>% 
      split(f = ~Species) 
    
    slickR(
      map(
        names(iris_split)
        ,~datatable(iris_split[[.x]])
      )
    )
    
  })
  
}

shinyApp(ui = ui, server = server)

In the example above, I would like a slide per iris species. I believe the reason why this doesn't work is because DT has its own render functions, and I am not sure how to incorporate both renderSlickR and renderDT if that's even possible. I know I could simply use datatable's pagination for this, but as mentioned my use case will also have an image above each table e.g. iris species image.

Share Improve this question asked Feb 18 at 1:26 sactyrsactyr 4271 gold badge3 silver badges15 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

From my reading of the docs slickR cannot render any objects itself. Instead following the code in this related question you can export each data table object as an HTML file, which could then be included in the slickR carousel as an iframe.

library(shiny)
library(purrr)
library(DT)
library(slickR)

ui <- fluidPage(
  slickROutput("iris_slickr", width = "90%")
)

server <- function(input, output) {
  output$iris_slickr <- renderSlickR({
    iris_split <- iris |>
      split(f = ~Species)

    filenames <- purrr::map_chr(iris_split, \(x) {
      file <- tempfile(fileext = ".html")
      datatable(x) |>
        htmlwidgets::saveWidget(file)
      
      file
    })

    slickR(
      purrr::map_chr(
        filenames,
        \(x) paste0(readLines(x), collapse = "\n")
      ),
      slideType = "iframe",
      height = "500px"
    )
  })
}

shinyApp(ui = ui, server = server)

发布评论

评论列表(0)

  1. 暂无评论