R 更改数据库中变量的数据类型
我在R 更改数据库中变量的数据类型,r,shiny,R,Shiny,我在CheckboxGroupInput中编写了一段代码,用于上传文件、汇总数据和通过选择变量更改数据类型。但我面临着一些错误,比如: 警告:observeEventHandler:(列表)对象中出现错误,无法强制为类型“double” 有人能帮我解决这个问题吗 我的代码: library(shiny) library(readxl) library(summarytools) # install.packages("devtools") library(dev
CheckboxGroupInput
中编写了一段代码,用于上传文件、汇总数据和通过选择变量更改数据类型。但我面临着一些错误,比如:
警告:observeEventHandler:(列表)对象中出现错误,无法强制为类型“double”
有人能帮我解决这个问题吗
我的代码:
library(shiny)
library(readxl)
library(summarytools)
# install.packages("devtools")
library(devtools)
# install_github('dcomtois/summarytools', ref='dev-current')
ui <- fluidPage(
titlePanel("Data Visualization"),
sidebarLayout(
sidebarPanel(
radioButtons(
"fileType_Input",
label = h4("Choose File type"),
choices = c(".csv/txt" = 1, ".xls/.xlsx" = 2),
selected = 1,
inline = TRUE
),
fileInput(inputId = 'file1', label = '1.Upload a CSV File',
accept=c('text/csv','text/comma-separated-values,text/plain','.csv'))),
mainPanel(tabsetPanel(type = "tab",
tabPanel("Data",DT::dataTableOutput('contents')),
tabPanel("Summary",uiOutput("summaryTable")),
tabPanel("data_type",
box(checkboxGroupInput("class_var", "Variable", c("1"="1","2"="2")),
width = 4, status = "primary"),
box(title = "Change Data Type", width = 3, status = "primary",
solidHeader = TRUE, collapsible = TRUE,
radioButtons("choose_class", label = "",choices = list(Numeric = "Numeric",Factor = "Factor", Character = "Character", Date = "Date")
, selected = ""),
actionButton("chg_class", "Change")))
))
)
)
options(shiny.maxRequestSize=30*1024^2)
server <- function(input, output, session) {
myData <- reactive({
inFile <- input$file1
if (input$fileType_Input == "1") {
data <- read.csv(req(input$file1)$datapath,header = TRUE,stringsAsFactors = FALSE)
} else {
data <-read_excel(req(input$file1)$datapath,col_names = TRUE,sheet=1)
}
})
#Printing the data
output$contents <- DT::renderDataTable({
DT::datatable(myData())
})
#Getting summary of table
output$summaryTable <- renderUI({
out <- print(dfSummary( myData(),graph.magnif = 0.8), style = 'grid', omit.headings = TRUE, method = 'render',bootstrap.css = FALSE)
out[[3]][[2]][[1]]
})
#Updating of column names in checkbox
colnames <- reactive({ names(myData()) })
observeEvent(myData(), {
updateCheckboxGroupInput(session, "class_var",
label = "Select Columns",
choices = colnames(),
selected = "")
})
## update when selection changes
# storing the selected variable from the variables list table
table.sel <- reactive({
myData()[,which(colnames(myData()) == col.name()[input$class_var,1])]
})
observeEvent(input$chg_class,{
if( input$choose_class == "Numeric"){
myData()[, input$class_var] <- as.numeric(myData()[, input$class_var])
} else if(input$choose_class == "Factor"){
myData()[, input$class_var] <- as.factor(myData()[, input$class_var])
} else if( input$choose_class == "Character"){
myData()[, input$class_var] <- as.character(myData()[, input$class_var])
} else if( input$choose_class == "Date"){
myData()[, input$class_var] <- as.Date(myData()[, input$class_var])
}
modified_dset
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(readxl)
库(摘要工具)
#安装包(“devtools”)
图书馆(devtools)
#安装\u github('dcomtois/summarytools',ref='dev-current')
ui试试这个方法()[,在反应式表达式中输入$class\u var]
library(shiny)
library(readxl)
library(summarytools)
# install.packages("devtools")
library(devtools)
# install_github('dcomtois/summarytools', ref='dev-current')
ui <- fluidPage(
titlePanel("Data Visualization"),
sidebarLayout(
sidebarPanel(
radioButtons(
"fileType_Input",
label = h4("Choose File type"),
choices = c(".csv/txt" = 1, ".xls/.xlsx" = 2),
selected = 1,
inline = TRUE
),
fileInput(inputId = 'file1', label = '1.Upload a CSV File',
accept=c('text/csv','text/comma-separated-values,text/plain','.csv'))),
mainPanel(tabsetPanel(type = "tab",
tabPanel("Data",DT::dataTableOutput('contents')),
tabPanel("Summary",uiOutput("summaryTable")),
tabPanel("data_type",
box(checkboxGroupInput("class_var", "Variable", c("1"="1","2"="2")),
width = 4, status = "primary"),
box(title = "Change Data Type", width = 3, status = "primary",
solidHeader = TRUE, collapsible = TRUE,
radioButtons("choose_class", label = "",choices = list(Numeric = "Numeric",Factor = "Factor", Character = "Character", Date = "Date")
, selected = ""),
actionButton("chg_class", "Change")))
))
)
)
options(shiny.maxRequestSize=30*1024^2)
server <- function(input, output, session) {
myData <- reactive({
inFile <- input$file1
if (input$fileType_Input == "1") {
data <- read.csv(req(input$file1)$datapath,header = TRUE,stringsAsFactors = FALSE)
} else {
data <-read_excel(req(input$file1)$datapath,col_names = TRUE,sheet=1)
}
})
#Printing the data
output$contents <- DT::renderDataTable({
DT::datatable(myData())
})
#Getting summary of table
output$summaryTable <- renderUI({
out <- print(dfSummary( myData(),graph.magnif = 0.8), style = 'grid', omit.headings = TRUE, method = 'render',bootstrap.css = FALSE)
out[[3]][[2]][[1]]
})
#Updating of column names in checkbox
colnames <- reactive({ names(myData()) })
observeEvent(myData(), {
updateCheckboxGroupInput(session, "class_var",
label = "Select Columns",
choices = colnames(),
selected = "")
})
## update when selection changes
# storing the selected variable from the variables list table
table.sel <- reactive({
myData()[,which(colnames(myData()) == col.name()[input$class_var,1])]
})
observeEvent(input$chg_class,{
if( input$choose_class == "Numeric"){
myData <- as.numeric(myData()[, input$class_var])
} else if(input$choose_class == "Factor"){
myData <- as.factor(myData()[, input$class_var])
} else if( input$choose_class == "Character"){
myData <- as.character(myData()[, input$class_var])
} else if( input$choose_class == "Date"){
myData <- as.Date(myData()[, input$class_var])
}
modified_dset
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(readxl)
库(摘要工具)
#安装包(“devtools”)
图书馆(devtools)
#安装\u github('dcomtois/summarytools',ref='dev-current')
用户界面可能是相关的:谢谢Jaap的评论。但我仍然面临着错误警告:错误在