我試圖找出我怎麼能得到從被動SQL查詢的數據後更改列的類型......[R閃亮:從SQL查詢格式反應data.frame
例如,當我獲取數據從數據庫中,一些列是字符,我希望它們是因素。有些列是數字(這是正確的),但我需要它們作爲數據表中的因子顯示(用於數據表中,因爲列名爲Tolerance,並且容差不能按範圍過濾,所以它應該是一個數)。
簡單代碼:
library(ROracle)
library(shiny)
library(DT)
server <- shinyServer(
function(input, output, session) {
con <- dbConnect(dbDriver("Oracle"),"xx/K",username="user",password="pwd")
tableList <- dbListTables(con,schema="K")
updateSelectizeInput(session, "tabnames", server = TRUE, choices = tableList)
sqlOutput <- reactive({
sqlInput <- paste("select rownum * from K.",input$tabnames)
dbGetQuery(con$cc, sqlInput, stringsAsFactors = T)#it hasnt worked neither
})
output$table <- DT::renderDataTable(sqlOutput(), server=TRUE, rownames=TRUE, filter="top", options=list(pageLength=10))
session$onSessionEnded(function() { dbDisconnect(con) })
})
ui_panel <-
tabPanel("Test",
sidebarLayout(
sidebarPanel(
),
mainPanel(
selectizeInput("tabnames",label = "server side", choices = NULL),
tableOutput("out"),
tableOutput("table")
)
)
)
ui <- shinyUI(navbarPage("Test",ui_panel))
runApp(list(ui=ui,server=server))
當我試圖簡單地說:
output$table <- DT::renderDataTable({
sqlOutput()$HOEHE_TOLP <- as.factor(sqlOutput()$HOEHE_TOLP)
datatable(sqlOutput(), server=TRUE, rownames=TRUE, filter="top", options=list(pageLength=10))})
它沒有工作,並給了我一個錯誤:
Error in sqlOutput()$HOEHE_TOLP <- as.factor(sqlOutput()$HOEHE_TOLP) :
ungültige (NULL) linke Seite in Zuweisung
* invalid (NULL) left side of assignment
任何想法如何我可以將一些列轉換爲響應數據框架的因素?
乾杯
您可以將數據幀本地保存在反應函數中,然後在需要的列上調用as.factor()。 – Gopala
這可能會很棘手,因爲會有很多用戶在使用應用程序,其次是過濾後的數據會很大...... –
不確定你的意思,因爲保存並返回數據幀到一個變量與被動回報(一個數據框)沒有什麼不同。 – Gopala