闪亮:如何输入用 double-quotes (") 分隔的文本字符串列表
Shiny: how to input a list of text strings that are delimited with double-quotes (")
我 运行 遇到了文本输入问题。默认似乎是 textInput() 函数输出带有“”的文本。我正在尝试将多个单词输入 textInput(),每个单词周围都有一个“”。例如:
而不是将 test1、test2、test3 输出为:"test1,test2,test3",
我要 "test1","test2","test3"
我尝试将 cat() 和 paste() 与 \ 结合使用来解决它,但 renderDatatable() 函数似乎不接受它。
这是我目前尝试过的方法:
ui<- fluidPage(
textInput(inputId = "words",
label = "Enter search terms, separated by commas",
value = ""),
titlePanel("List of Claims"),
fluidRow(
dataTableOutput(outputId = "table")
)
)
server <- function(input,output){
reactivedata <- reactive({
input$words
})
output$table <- renderDataTable({
inputtext<-function(x) {paste(eval(parse(text=input$words)))}
claiminfo2$xxtotal <-rowSums(claiminfo2[,inputtext(X)])
claiminfo3 <- claiminfo2[,c(1,length(claiminfo2))]
claiminfo4 <- subset(claiminfo3,claiminfo3[,2] >0)
claiminfo4
})
}
shinyApp(ui = ui, server = server)
claiminfo2 是一个以单词作为列标题的文档术语矩阵。我试图让它让用户输入单词,然后应用程序通过 claiminfo2[,c(words)]
搜索这些列。然而,而不是得到
claiminfo2[,c("word1","word2")]
,我正在
claiminfo2[,c("word1 , word2")]
这行不通
您可以在 server.R
中使用 strsplit
来创建用于对数据框进行子集化的词向量。这是一个例子(ui.R
不变):
claiminfo2 <- data.frame(a=letters[1:4],b=letters[5:8],d=letters[9:12])
server <- function(input,output){
output$table <- renderDataTable({
claiminfo2[,unlist(strsplit(input$words,",")),drop=FALSE]
})
另一种选择是使用 selectize
输入,这将为用户提供有关数据框中包含哪些列的建议。这是一个例子:
library(shiny)
claiminfo2 <- data.frame(a=letters[1:4],b=letters[5:8],d=letters[9:12])
ui<- fluidPage(
titlePanel("List of Claims"),
fluidRow(
dataTableOutput(outputId = "table")
),
selectInput(inputId = "words",
label = "Enter search terms, separated by commas",
choices=colnames(claiminfo2), multiple=TRUE, selectize=TRUE)
)
server <- function(input,output){
output$table <- renderDataTable({
if(!is.null(input$words)){
claiminfo2[,unlist(strsplit(input$words,",")),drop=FALSE]
}
})
}
shinyApp(ui = ui, server = server)
我 运行 遇到了文本输入问题。默认似乎是 textInput() 函数输出带有“”的文本。我正在尝试将多个单词输入 textInput(),每个单词周围都有一个“”。例如:
而不是将 test1、test2、test3 输出为:"test1,test2,test3", 我要 "test1","test2","test3"
我尝试将 cat() 和 paste() 与 \ 结合使用来解决它,但 renderDatatable() 函数似乎不接受它。
这是我目前尝试过的方法:
ui<- fluidPage(
textInput(inputId = "words",
label = "Enter search terms, separated by commas",
value = ""),
titlePanel("List of Claims"),
fluidRow(
dataTableOutput(outputId = "table")
)
)
server <- function(input,output){
reactivedata <- reactive({
input$words
})
output$table <- renderDataTable({
inputtext<-function(x) {paste(eval(parse(text=input$words)))}
claiminfo2$xxtotal <-rowSums(claiminfo2[,inputtext(X)])
claiminfo3 <- claiminfo2[,c(1,length(claiminfo2))]
claiminfo4 <- subset(claiminfo3,claiminfo3[,2] >0)
claiminfo4
})
}
shinyApp(ui = ui, server = server)
claiminfo2 是一个以单词作为列标题的文档术语矩阵。我试图让它让用户输入单词,然后应用程序通过 claiminfo2[,c(words)]
搜索这些列。然而,而不是得到
claiminfo2[,c("word1","word2")]
,我正在
claiminfo2[,c("word1 , word2")]
这行不通
您可以在 server.R
中使用 strsplit
来创建用于对数据框进行子集化的词向量。这是一个例子(ui.R
不变):
claiminfo2 <- data.frame(a=letters[1:4],b=letters[5:8],d=letters[9:12])
server <- function(input,output){
output$table <- renderDataTable({
claiminfo2[,unlist(strsplit(input$words,",")),drop=FALSE]
})
另一种选择是使用 selectize
输入,这将为用户提供有关数据框中包含哪些列的建议。这是一个例子:
library(shiny)
claiminfo2 <- data.frame(a=letters[1:4],b=letters[5:8],d=letters[9:12])
ui<- fluidPage(
titlePanel("List of Claims"),
fluidRow(
dataTableOutput(outputId = "table")
),
selectInput(inputId = "words",
label = "Enter search terms, separated by commas",
choices=colnames(claiminfo2), multiple=TRUE, selectize=TRUE)
)
server <- function(input,output){
output$table <- renderDataTable({
if(!is.null(input$words)){
claiminfo2[,unlist(strsplit(input$words,",")),drop=FALSE]
}
})
}
shinyApp(ui = ui, server = server)