我正在创建一个闪亮的应用程序,允许您上传包含一些数据(相关和独立变量)的excel文件,以便运行线性回归 .
我正在使用read.xlsx加载excel文件,该文件将在第一个选项卡中输出一个表 . 在第二个选项卡中,我想要一个小部件,它允许您选择因变量和另一个输入小部件,要求您选择自变量 . 这些变量将是加载的数据列 Headers 的函数 . 因此假设加载的数据如下所示:
A B C D E F G
22000 0.605 0.352 1.125 103.5 162 7107.263017
22000 0.495 0.352 1.375 126.5 162 4569.734496
22000 0.495 0.352 1.375 103.5 198 4649.524562
18000 0.495 0.352 1.125 126.5 198 4495.776272
其中G是自变量 . 我希望列 Headers 可以用作第二个选项卡上变量选择的基础 . 我面临的问题是将加载的excel文件头(列名)链接为我的变量选择器,因为我在我的UI中将它们定义为我选择的变量:
selectizeInput('inv',"In", choices = var, multiple = TRUE),
selectizeInput('out',"Out", choices = pred, multiple = FALSE)
因此var和pred在服务器下定义,因此生成错误:找不到对象'var' .
我该如何解决这个问题 . 这是到目前为止的代码:
ui
titlePanel("Hi"),
sidebarLayout(position = "left",
sidebarPanel(
conditionalPanel(condition = "input.tabs1==1",
tags$style(type='text/css', ".well { max-width: 20em; }"),
# Tags:
tags$head(
tags$style(type="text/css", "select[multiple] { width: 100%; height:10em}"),
tags$style(type="text/css", "select { width: 100%}"),
tags$style(type="text/css", "input { width: 19em; max-width:100%}")
),
# Select filetype:
selectInput("readFunction", "Function to read data:", c(
# Base R:
"read.table",
"read.csv",
"read.csv2",
"read.delim",
"read.delim2",
"readWorksheet",
"read_excel",
"read.xlsx"
)),
# Argument selecter:
htmlOutput("ArgSelect"),
# Argument field:
htmlOutput("ArgText"),
# Upload data:
fileInput("file", "Upload data-file:"),
# Variable selection:
htmlOutput("varselect"),
br(),
textInput("name","Dataset name:","Data")),
conditionalPanel(condition = "input.tabs1==2",
#fileInput('file', 'Choose file to upload.'),
selectizeInput('invar',"Select Regression Input Variables", choices = varnames, multiple = TRUE),
selectizeInput('outvar',"Select Regression Output Variable", choices = predictors, multiple = FALSE)
),
mainPanel(
tabsetPanel(id="tabs1",
tabPanel("Data File",value = 1,tableOutput("table")),
tabPanel("LM Plot", value=2, plotOutput("PlotLM")))
)
)
))
server
options(shiny.maxRequestSize=30*1024^2)
### Argument names:
ArgNames
Names
Names
return(Names)
})
# Argument selector:
output$ArgSelect
if (length(ArgNames())==0) return(NULL)
selectInput("arg","Argument:",ArgNames())
})
## Arg text field:
output$ArgText
fun__arg
if (is.null(input$arg)) return(NULL)
Defaults
if (is.null(input[[fun__arg]]))
{
textInput(fun__arg, label = "Enter value:", value = deparse(Defaults[[input$arg]]))
} else {
textInput(fun__arg, label = "Enter value:", value = input[[fun__arg]])
}
})
### Data import:
Dataset
if (is.null(input$file)) {
# User has not uploaded a file yet
return(data.frame())
}
args
argList
for (i in seq_along(args))
{
argList[[i]]
}
names(argList)
argList
Dataset
return(Dataset)
})
# Select variables:
output$varselect
if (identical(Dataset(), '') || identical(Dataset(),data.frame())) return(NULL)
# Variable selection:
selectInput("vars", "Variables to use:",
names(Dataset()), names(Dataset()), multiple =TRUE)
})
# Show table:
output$table
if (is.null(input$vars) || length(input$vars)==0) return(NULL)
return(Dataset()[,input$vars,drop=FALSE])
})