在闪亮的[R]

时间:2015-07-23 10:49:45

标签: r shiny shinydashboard

我已经制作了一个上传按钮,通过它我可以上传.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"),

我想执行&#34; a + b&#34;等操作。和&#34; a-b&#34;在数据集上,在actionButton的帮助下将其添加为数据集中的新列。

问题1:我尝试使用tableOutput()函数在shinyapp中显示DATA,但它在R控制台中显示DATA数据帧。

在server.R中:

DATA <- dataframe %>% group_by(C) %>% mutate(A) %>% 
mutate(B) %>% mutate(add = (A+B)) %>% mutate(sub = (A-B))

问题2:我想使用DATA作为输入来制作(add,sub)的ggplots

1 个答案:

答案 0 :(得分:3)

你可以这样做:

ui.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()
        })
})

server.R

fileInput

我删除了操作按钮,因为server.R会在用户选择文件后直接加载文件。 在dataframe中,加载的dataframe()存储在无效值中,当您想要绘制/渲染表格以获取数据帧时,可以调用<head>

您可能还想编写代码以检查您的csv文件是否有A和B作为列等。