在 r shiny 中使用 pickerInput 来应用函数
using pickerInput in r shiny to apply function
我希望能够将函数应用于 RLdata10000
数据集中的给定列集。我一直在阅读闪亮的教程,并试图学习如何使用 observeEvent
和 actionButton
。但是,我希望能够选择我使用的列,所以我遇到了 pickerInput
。简而言之,我希望能够从 RLdata10000
中选择一组列,并通过 actionButton
.
应用该函数
我的问题是出现错误:Error: unused argument (RLdata10000)
。我的代码如下。我希望最终能够使用两个数据文件来做到这一点。任何帮助将不胜感激。
library(shiny)
library(DT)
library(shinyWidgets)
library(plyr)
library(dplyr)
library(RecordLinkage)
data(RLdata10000)
cleanup <- function(x){
x <- as.character(x) # convert to character
x <- tolower(x) # make all lowercase
x <- trimws(x, "both") # trim white space
return(x)
}
ui <- basicPage(
h2("Record Linkage Data"),
actionButton(inputId = "clean", label = "Clean Data")
pickerInput(width = "75%",
inputId = "pick_col1",
label = "Select columns to display",
choices = colnames(RLdata10000),
selected = colnames(RLdata10000),
options = list(
`actions-box` = T,
`selected-text-format` = paste("count > ", length(colnames(RLdata10000)) - 1),
`count-selected-text` = "Alle",
liveSearch = T,
liveSearchPlaceholder = T
),
multiple = T)
DT::dataTableOutput("mytable")
)
server <- function(input, output) {
observeEvent(input$clean, {
output$mytable = DT::renderDataTable({
lapply(input$pick_col1, cleanup)
})
}
}
shinyApp(ui, server)
我实际上无法重现您指出的错误,但您有一些问题阻止您获得(我认为)您想要的东西。
首先,您在 actionButton
和 pickerInput
元素之后的 UI 中缺少逗号。
Second,当你使用 input$pick_col1
时,你只给了 lapply
列的名称 - 而不是数据 - 所以你的清理函数什么都没有继续工作。使用 dplyr
中的 select
提供了一种简单的方法来命名列并获取数据。
Last, renderDataTable
想要 table 格式作为输入(即数据框或矩阵),但是 lapply
生成一个列表。您需要将 lapply
的输出转换为可用的 class.
根据这三个更改,更新后的代码如下所示:
library(shiny)
library(DT)
library(shinyWidgets)
library(plyr)
library(dplyr)
library(RecordLinkage)
data(RLdata10000)
cleanup <- function(x){
x <- as.character(x) # convert to character
x <- tolower(x) # make all lowercase
x <- trimws(x, "both") # trim white space
return(x)
}
ui <- basicPage(
h2("Record Linkage Data"),
actionButton(inputId = "clean", label = "Clean Data"),
pickerInput(width = "75%",
inputId = "pick_col1",
label = "Select columns to display",
choices = colnames(RLdata10000),
selected = colnames(RLdata10000),
options = list(
`actions-box` = T,
`selected-text-format` = paste("count > ", length(colnames(RLdata10000)) - 1),
`count-selected-text` = "Alle",
liveSearch = T,
liveSearchPlaceholder = T
),
multiple = T),
DT::dataTableOutput("mytable")
)
server <- function(input, output) {
observeEvent(input$clean, {
output$mytable = DT::renderDataTable({
data.frame(lapply(select(RLdata10000, input$pick_col1), cleanup))
})
})
}
shinyApp(ui, server)
我希望能够将函数应用于 RLdata10000
数据集中的给定列集。我一直在阅读闪亮的教程,并试图学习如何使用 observeEvent
和 actionButton
。但是,我希望能够选择我使用的列,所以我遇到了 pickerInput
。简而言之,我希望能够从 RLdata10000
中选择一组列,并通过 actionButton
.
我的问题是出现错误:Error: unused argument (RLdata10000)
。我的代码如下。我希望最终能够使用两个数据文件来做到这一点。任何帮助将不胜感激。
library(shiny)
library(DT)
library(shinyWidgets)
library(plyr)
library(dplyr)
library(RecordLinkage)
data(RLdata10000)
cleanup <- function(x){
x <- as.character(x) # convert to character
x <- tolower(x) # make all lowercase
x <- trimws(x, "both") # trim white space
return(x)
}
ui <- basicPage(
h2("Record Linkage Data"),
actionButton(inputId = "clean", label = "Clean Data")
pickerInput(width = "75%",
inputId = "pick_col1",
label = "Select columns to display",
choices = colnames(RLdata10000),
selected = colnames(RLdata10000),
options = list(
`actions-box` = T,
`selected-text-format` = paste("count > ", length(colnames(RLdata10000)) - 1),
`count-selected-text` = "Alle",
liveSearch = T,
liveSearchPlaceholder = T
),
multiple = T)
DT::dataTableOutput("mytable")
)
server <- function(input, output) {
observeEvent(input$clean, {
output$mytable = DT::renderDataTable({
lapply(input$pick_col1, cleanup)
})
}
}
shinyApp(ui, server)
我实际上无法重现您指出的错误,但您有一些问题阻止您获得(我认为)您想要的东西。
首先,您在 actionButton
和 pickerInput
元素之后的 UI 中缺少逗号。
Second,当你使用 input$pick_col1
时,你只给了 lapply
列的名称 - 而不是数据 - 所以你的清理函数什么都没有继续工作。使用 dplyr
中的 select
提供了一种简单的方法来命名列并获取数据。
Last, renderDataTable
想要 table 格式作为输入(即数据框或矩阵),但是 lapply
生成一个列表。您需要将 lapply
的输出转换为可用的 class.
根据这三个更改,更新后的代码如下所示:
library(shiny)
library(DT)
library(shinyWidgets)
library(plyr)
library(dplyr)
library(RecordLinkage)
data(RLdata10000)
cleanup <- function(x){
x <- as.character(x) # convert to character
x <- tolower(x) # make all lowercase
x <- trimws(x, "both") # trim white space
return(x)
}
ui <- basicPage(
h2("Record Linkage Data"),
actionButton(inputId = "clean", label = "Clean Data"),
pickerInput(width = "75%",
inputId = "pick_col1",
label = "Select columns to display",
choices = colnames(RLdata10000),
selected = colnames(RLdata10000),
options = list(
`actions-box` = T,
`selected-text-format` = paste("count > ", length(colnames(RLdata10000)) - 1),
`count-selected-text` = "Alle",
liveSearch = T,
liveSearchPlaceholder = T
),
multiple = T),
DT::dataTableOutput("mytable")
)
server <- function(input, output) {
observeEvent(input$clean, {
output$mytable = DT::renderDataTable({
data.frame(lapply(select(RLdata10000, input$pick_col1), cleanup))
})
})
}
shinyApp(ui, server)