忽略R中的空文本输入
我是个新手。在下面的应用程序中,如果只填写了两个文本输入框中的一个,我希望能够呈现一个数据表。如果两个框都填好,应用程序工作正常。但是,如果只填写了一个变量,我希望数据表只呈现一个变量,例如,只输入X变量名称,并且表中只显示X变量数据忽略R中的空文本输入,r,shiny,R,Shiny,我是个新手。在下面的应用程序中,如果只填写了两个文本输入框中的一个,我希望能够呈现一个数据表。如果两个框都填好,应用程序工作正常。但是,如果只填写了一个变量,我希望数据表只呈现一个变量,例如,只输入X变量名称,并且表中只显示X变量数据 library(shiny) library(dplyr) library(DT) data("mtcars") ui <- fluidPage( titlePanel("Example 01"), sidebarLayout( sid
library(shiny)
library(dplyr)
library(DT)
data("mtcars")
ui <- fluidPage(
titlePanel("Example 01"),
sidebarLayout(
sidebarPanel(
textInput("x", "X Variable"),
textInput("y", "Y Variable")
),
mainPanel(
dataTableOutput(outputId = "table")
)
)
)
server <- function(input, output) {
tabledata <- reactive({
x <- mtcars %>% select(input$x) * 2
y <- mtcars %>% select(input$y) * 3
if (is.null(x) == TRUE){y}
if (is.null(y) == TRUE){x}
else {cbind(x,y)}
})
output$table <- renderDataTable(tabledata())
}
shinyApp(ui = ui, server = server)
为了测试,我输入了mpg作为X变量,cyl作为Y变量。如果你想知道为什么我使用textInput而不是selectInput,那是因为我使用它的项目有100000多个音乐艺术家的搜索选项
提前谢谢 它不起作用,因为如果其中一个输入为空,则它实际上不是空的,而是一个字符0,或者,如果您愿意的话。因此,R尝试选择一个命名的列,但失败了 然后,必须排除要显示的列列表中的空字符串 我简化了您的代码,并添加了一个触发器按钮来显示表格。这样,您可以等待键入C-Y-L来显示数据。否则,代码将尝试在每个键入的字符处对数据帧进行子集 有光泽的图书馆 图书馆弹琴 图书馆 数据车
ui不必像@Jrm_FRL指出的那样,通过输入$x==检查x是否为空,您可以避开这一点,只需检查x是否为实际列的名称:
x <- if(input$x %in% colnames(mtcars)) mtcars %>% select(input$x) * 2
对y做同样的处理,剩下的代码就应该按原样工作。我感谢您简化代码,但不幸的是,在我的项目中,输入不能很容易地组合成向量;首先修改它们。为了反映这个示例,我回到了原始代码,将mtcars%>%selectinput$x更改为mtcars%>%selectinput$x*2,并将y乘以3。为没有在最初的帖子中明确表示歉意。如果修改了输入,并且必须将x和y保留为存储值,您会怎么做?好的,然后我对我的答案进行了编辑,以坚持您的语法。然而,哲学思想仍然是一样的。出于商品原因,我保留了触发按钮,但你当然可以摆脱它!