我正在开发一个 Shiny 的应用程序来寻找数据集的最佳线性回归模型。我希望人们能够输入 .txt、.xls 或 .csv 文件。我的 ui.R 中有此代码:
fileInput("mydata", label = h4("Please upload the .xls, .txt, or.csv file you would like included in the analysis.")),
checkboxGroupInput("filetype", label = h4("Please select the type of data uploaded:"), choices = (".csv", ".txt", ".xls"), selected = ".xls"),
checkboxGroupInput("header", label = h4("Does your table have a header (column names)?"), choices = ("TRUE", "FALSE"), selected = "TRUE"),
我相信这应该允许他们浏览计算机查找文件,上传它,然后告诉我文件类型以及是否有标题。
在我的 server.R 中,我不确定如何告诉我的输出如果有 .txt 或 .xls,则使用一个代码;如果有 .csv,则如何告诉我的输出使用另一个代码。这是我到目前为止所拥有的一切:
dat <- read.table(input$mydata, header=input$header) #if .xls or .txt
dat <- read.csv(input$mydata, header=input$header) #if .csv
我环顾四周,但似乎找不到任何例子。有谁知道我可以向我的 server.R 代码添加什么,以便能够根据他们选择的框来区分这一点?
最佳答案
您应该使用单选按钮而不是组复选框,因为前者只允许进行一项选择。例如,组复选框将允许他们说他们的文件既是 .csv 又是 .txt。这也意味着用户可以选择他们的文件有标题和没有标题。
完成更改后,您所需要的只是一个基本的 if/then 语句。类似...
header_var <- FALSE
if (input$header==1) header_var <- TRUE
if (input$filetype==1) { # input 1 means they picked .csv
dat <- read.csv(input$mydata, header=header_var)
}
...然后只需为选择 2 添加一个 else if,为选择 3 添加一个 else。
关于r - 根据 ui.R 中选定的文件类型更改 server.R 中使用的代码 - Shiny,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33738077/