如何在闪亮的应用程序上以datatable项的形式返回dataframe
在下面的代码中,我设法将数据摘要的结果作为打印文本返回,但是我想在datatable中返回它,但我从未得到想要的结果。有人能帮我吗如何在闪亮的应用程序上以datatable项的形式返回dataframe,dataframe,shiny,datatables-1.10,Dataframe,Shiny,Datatables 1.10,在下面的代码中,我设法将数据摘要的结果作为打印文本返回,但是我想在datatable中返回它,但我从未得到想要的结果。有人能帮我吗 ui <- fluidPage( fileInput('file1', 'Upload your CSV File'), htmlOutput("variables"), numericInput(inputId="n", label="n", value=4, min=3,step=1), htmlO
ui <- fluidPage(
fileInput('file1', 'Upload your CSV File'),
htmlOutput("variables"),
numericInput(inputId="n", label="n", value=4, min=3,step=1),
htmlOutput("facteurs"),
verbatimTextOutput("res"),
DT::dataTableOutput("Tab")
)
server <- function(input, output) {
myData1 <- reactive({
inFile <- input$file1
if (is.null(inFile)) return(NULL)
data <- read.csv(inFile$datapath, header = TRUE,row.names=1)
data
})
output$variables <- renderUI({
req(myData1())
df_init <- myData1()
for(i in c(1:ncol(df_init))){
if((class(df_init[,i])=="integer") && length(unique(df_init[,i]))<=input$n){df_init[,i]<-factor(df_init[,i])}}
x=sapply(df_init,class)
x=(x=="numeric")
df=df_init[,x]
if (identical(df, '') || identical(df,data.frame())) return(NULL)
selectInput(inputId = "V1", label = "Variables to use: Y", choices=names(df), selected=names(df[1]))
})
output$facteurs <- renderUI({
req(myData1())
df_init <- myData1()
for(i in c(1:ncol(df_init))){
if((class(df_init[,i])=="integer") && length(unique(df_init[,i]))<=input$n){df_init[,i]<-factor(df_init[,i])}}
x=sapply(df_init,class)
x=(x=="factor")
df=df_init[,x]
if (identical(df, '') || identical(df,data.frame())) return(NULL)
selectInput(inputId = "F1", label = "Factors to use: X", choices=names(df), selected=names(df))
})
output$res<-renderPrint({
data<-myData1()
if (is.null(data)) return("Enter your data!")
v=c(input$V1,input$F1)
x=data[,v]
print(tapply(x[,1],x[,2],summary))
})
output$Tab<-renderDataTable({
data<-myData1()
if (is.null(data)) return("Enter your data!")
v=c(input$V1,input$F1)
x=data[,v]
DT::datatable(data=tapply(x[,1],x[,2],summary))
})
}
shinyApp(ui = ui, server = server)
您不太清楚需要输出的外观,因此这里有一种方法:
output$Tab<-renderDataTable({
data<-myData1()
if (is.null(data)) return("Enter your data!")
v=c(input$V1,input$F1)
x=data[,v]
do.call(cbind, tapply(x[,1],x[,2], summary))
})
或者,如果您想将其转置,请将cbind更改为rbind非常感谢您,我确实需要它
output$Tab<-renderDataTable({
data<-myData1()
if (is.null(data)) return("Enter your data!")
v=c(input$V1,input$F1)
x=data[,v]
do.call(cbind, tapply(x[,1],x[,2], summary))
})