在 shiny [R] 中上传 CSV 文件后执行操作
performing operations after uploading a CSV file in shiny [R]
我制作了一个上传按钮,通过它我上传了一个闪亮的 .CSV 文件[数据集]。
dataframe <- data.frame(A=c(2,3,4,5,6,7,3,7,8,9,2),B=c(3,7,8,9,2,1,2,3,4,5,6),C=c(1,1,1,2,2,1,1,1,1,2,2))
在ui.R中:
fileInput('datafile', 'Choose CSV file',
accept=c('csv', 'comma-separated-values','.csv')),
actionButton("uploaddata", "upload"),
我想对数据集执行 "a+b" 和 "a-b" 等操作,并借助 actionButton 将其作为新列添加到我的数据集中。
问题 1:我尝试使用 tableOutput() 函数在 shinyapp 中显示数据,但它却在 R 控制台中显示数据数据帧。
在server.R中:
DATA <- dataframe %>% group_by(C) %>% mutate(A) %>%
mutate(B) %>% mutate(add = (A+B)) %>% mutate(sub = (A-B))
问题 2:我想使用 DATA 作为输入来制作 (add, sub)
的 ggplots
你可以这样做:
ui.R
library(shiny)
shinyUI(fluidPage(
fileInput('datafile', 'Choose CSV file',
accept=c('csv', 'comma-separated-values','.csv')),
tableOutput('table'),
plotOutput('plot')
))
server.R
library(shiny)
library(ggplot2)
shinyServer(function(input, output,session) {
dataframe<-reactive({
if (is.null(input$datafile))
return(NULL)
data<-read.csv(input$datafile$datapath)
data<- data %>% group_by(C) %>% mutate(A) %>%
mutate(B) %>% mutate(add = (A+B)) %>% mutate(sub = (A-B))
data
})
output$table <- renderTable({
dataframe()
})
output$plot <- renderPlot({
if(!is.null(dataframe()))
ggplot(dataframe(),aes(x=X,y=add))+geom_point()
})
})
我删除了操作按钮,因为 fileInput
将在用户选择文件后直接加载它。
在server.R
中,加载的dataframe
存储的是一个反应值,当你想做一个plot/render时可以调用dataframe()
得到table数据框。
您可能还想编写代码来检查您的 csv 文件是否将 A 和 B 作为列等。
我制作了一个上传按钮,通过它我上传了一个闪亮的 .CSV 文件[数据集]。
dataframe <- data.frame(A=c(2,3,4,5,6,7,3,7,8,9,2),B=c(3,7,8,9,2,1,2,3,4,5,6),C=c(1,1,1,2,2,1,1,1,1,2,2))
在ui.R中:
fileInput('datafile', 'Choose CSV file',
accept=c('csv', 'comma-separated-values','.csv')),
actionButton("uploaddata", "upload"),
我想对数据集执行 "a+b" 和 "a-b" 等操作,并借助 actionButton 将其作为新列添加到我的数据集中。
问题 1:我尝试使用 tableOutput() 函数在 shinyapp 中显示数据,但它却在 R 控制台中显示数据数据帧。
在server.R中:
DATA <- dataframe %>% group_by(C) %>% mutate(A) %>%
mutate(B) %>% mutate(add = (A+B)) %>% mutate(sub = (A-B))
问题 2:我想使用 DATA 作为输入来制作 (add, sub)
的 ggplots你可以这样做:
ui.R
library(shiny)
shinyUI(fluidPage(
fileInput('datafile', 'Choose CSV file',
accept=c('csv', 'comma-separated-values','.csv')),
tableOutput('table'),
plotOutput('plot')
))
server.R
library(shiny)
library(ggplot2)
shinyServer(function(input, output,session) {
dataframe<-reactive({
if (is.null(input$datafile))
return(NULL)
data<-read.csv(input$datafile$datapath)
data<- data %>% group_by(C) %>% mutate(A) %>%
mutate(B) %>% mutate(add = (A+B)) %>% mutate(sub = (A-B))
data
})
output$table <- renderTable({
dataframe()
})
output$plot <- renderPlot({
if(!is.null(dataframe()))
ggplot(dataframe(),aes(x=X,y=add))+geom_point()
})
})
我删除了操作按钮,因为 fileInput
将在用户选择文件后直接加载它。
在server.R
中,加载的dataframe
存储的是一个反应值,当你想做一个plot/render时可以调用dataframe()
得到table数据框。
您可能还想编写代码来检查您的 csv 文件是否将 A 和 B 作为列等。