r - 如何以表格格式显示“pdfsearch”输出,其中包含可见的文本列、页码、行号?
问题描述
我用 Shiny 创建了一个简单的pdfsearch
搜索选项。但是,我希望输出采用表格形式,以便于阅读。我尝试使用数据表包,但似乎没有得到我需要的正确格式。
library(pdfsearch)
library(shiny)
library(DT)
file <- system.file('pdf', 'rhyme.pdf', package = 'pdfsearch')
word_sentence <-function(word) {keyword_search(file,
keyword = word,
path = TRUE)}
retobj <- function(word) {
x <- word_sentence(word)
page <- x$page_num
line <- x$line_num
text <- x$line_text
return(paste0(text," "," *Page no-",page," *line-",line))
}
ui<- shinyUI(fluidPage(dashboardBody(
img(src='image.jpg', align = "left"),style = "padding-top:20px",
br(),
br(),
br(),
br(),
fluidRow(
column(width = 2,
h5(HTML("<strong>Enter a word.Click \"SEARCH\" </strong>")),
wellPanel(
textInput("inputString","Enter a word here",value=" "),
submitButton("SEARCH"),
)),
column(width= 7,style = "max-height: 90vh; overflow-y: auto;",
h4("Search Results"),
wellPanel(
tags$style("#mytext { white-space: pre-line; }"),
textOutput("mytext")
))
)
)
)
)
server <- function(input, output, session) {
output$mytext <- renderPrint({
sentences <- retobj(input$inputString)
length(sentences)
cat(paste0(1:length(sentences)," - ",sentences,sep= '\n'))
})
}
shinyApp(ui,server)
当我搜索“hill”这个词时,我现在得到了输出。作为 :
1.jack went to the hill blah blah *Page no- 12 * line no -34
2.jack went rolling on hill blah *Page no 17 *line no - 56
3.jill climbed the hill blah blah * Page no 34 * line no -89
''''
20......
我希望输出以表格格式显示在 Shiny 中,例如:
Text Page no Line No
jack went to the hill blah 12 34
jack went rolling on hill blah 17 56
jill climbed the hill blah 34 89
' ''''''''''
使用ShinyrenderDataTable
的server
部分和tableOutput
inui
在 R 控制台而不是 Shiny 中为我提供了输出,我尝试
retob <- function({.....tableHTML(text,page,line)}
了但它给了我错误,因为不是矩阵格式。有没有更简洁的方法来以上述方式格式化内容?
解决方案
您的retobj
函数实际上是问题所在,因为它只创建一个字符串作为返回值。但是,keyword_search
已经返回了一个 tibble,因此您可以直接使用此输出并将dplyr
其转换为所需的格式并最终DT
显示它:
library(pdfsearch)
library(shiny)
library(shinydashboard)
library(DT)
library(dplyr)
file <- system.file('pdf', '1501.00450.pdf', package = 'pdfsearch')
word_sentence <-function(word) {keyword_search(file,
keyword = word,
path = TRUE)}
ui<- shinyUI(fluidPage(dashboardBody(
br(),
br(),
br(),
br(),
fluidRow(
column(width = 2,
h5(HTML("<strong>Enter a word.Click \"SEARCH\" </strong>")),
wellPanel(
textInput("inputString","Enter a word here",value=" "),
submitButton("SEARCH"),
)),
column(width= 7,style = "max-height: 90vh; overflow-y: auto;",
h4("Search Results"),
wellPanel(
tags$style("#mytext { white-space: pre-line; }"),
DTOutput("mytext")
))
)
)
)
)
server <- function(input, output, session) {
output$mytext <- renderDT({
results <- word_sentence(input$inputString)
results <- results %>%
select(line_text, page_num, line_num) %>%
rename(Text = line_text,
`Page no` = page_num,
`Line no` = line_num)
datatable(results)
})
}
shinyApp(ui,server)
推荐阅读
- xml - 使用 API 以编程方式在 HCL Connections 中创建 wiki 页面
- batch-file - 批处理 - 来自不同行的值进入一个新行
- html - 为什么 mx-auto 有效,而 my-auto 无效?
- xml - 将非 ascii 字符写入 xml/UTF-8
- flutter - Best way to increase GestureDetector area
- wordpress - can i add user Sell option in wordpress? kind of like stockx or ebay
- sql - Merge statement error in Databricks community edition: ParseException: extraneous input
- java - (Array of objects) The method is undefined for the type
- java - How to implement fault tolerant file upload with akka remote and steam
- java - 如何避免“java.lang.RuntimeException:这里没有可用的 HTTP 上下文”?