#r #shiny #datatable #shiny-server #dt
Вопрос:
у меня есть таблица данных в приложении shiny, в таблице есть опция под названием «Нажмите, чтобы просмотреть документы». Как динамически выбирать, если файла нет, таблица данных будет отображаться, так как данных нет, поэтому не нажимайте, или как отобразить пустой текст, если в ссылке нет файла.
c = data.frame(link = c("https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/basic-link-1.pdf?hsLang=en", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/" )) c$link lt;- paste0("lt;a href='",c$link,"'target='_blank'gt;Click here to view the Documentlt;/agt;") DT::datatable(c, rownames = F,escape = FALSE,selection=list(mode="single",target="row"),options = list(pageLength = 1000,scrollX = TRUE, dom = 't',columnDefs = list(list(visible=FALSE),list(className = 'dt-left', targets = '_all'),list(width = '75px', targets = 3))) )
Ответ №1:
Вы можете использовать RCurl::url.exists()
надежную проверку, но все зависит от ваших данных, так как это занимает относительно много времени, если у вас, конечно, много URL-адресов. Если в вашей ситуации просто URL-адрес каталога заканчивается на «/» по сравнению с файлом, вы можете выбрать совпадение с последним символом, и если это»/», то файла нет, а если нет, то есть. Вот пример использования реальной проверки существования.
library(RCurl) library(data.table) c = data.frame(link = c("https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/basic-link-1.pdf?hsLang=en", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/", "https://www.antennahouse.com/hubfs/xsl-fo-sample/pdf/" )) setDT(c) # as I prefer to work with data.table c[, link := ifelse(RCurl::url.exists(link), paste0("lt;a href='", link, "'target='_blank'gt;Click here to view the Documentlt;/agt;"), ""), by = link]
Комментарии:
1. Где вы вызываете заявление, где /» нет, тогда нет файла @Merjin van Tilborg
2. Нет, я показал вам пример, чтобы проверить URL-адрес, существует ли он или нет, используя пакет RCurl, я также предложил альтернативный подход, но у вас это не получилось.
3. я пробовал, кажется, это не работает