测试环境:win10+RStudio

提前准备:

install.packages('shiny')

install.packages('RMySQL')

数据表准备:

最终实现的界面效果如下:点击【Click Me】按钮,从数据库读出数据,并在界面画出条形图

正式开始!

在R项目(比如ShinyDemo)的目录下新建一个文件夹barplotDemo

然后在这个目录下新建两个文件,ui.R和server.R

ui.R的代码实现如下

library(shiny)

# Use a fluid Bootstrap layout
fluidPage(
# Give the page a title
titlePanel("A Simple Shiny Demo"), # Generate a row with a sidebar
sidebarLayout(
# Define the sidebar with one input
sidebarPanel(
actionButton("do", "Click Me")
), # Create a spot for the barplot
mainPanel(
plotOutput("dataPlot")
)
)
)

server.R的代码如下:

library(RMySQL)

# Define a server for the Shiny app
function(input, output) {
observeEvent(input$do, {
   # connect the database
conn <- dbConnect(MySQL(), dbname = "test", username="root", password="",client.flag=CLIENT_MULTI_STATEMENTS)
users = dbGetQuery(conn, "SELECT * FROM tb_user")
dbDisconnect(conn)
output$dataPlot <- renderPlot({
vAge<-as.vector(unlist(users[3]))
vName<-as.vector(unlist(users[2]))
height<-vAge
names(height)<-vName
barplot(height)
})
})
}

备注:

(1)observeEvent(input$do, { }) 是按钮监听处理

(2)barplot的【height】要么是向量要么是矩阵,而users是list,所以需要进行处理,可以在Console查看数据类型

> is.vector(users)
[1] FALSE
> is.array(users)
[1] FALSE
> mode(users)
[1] "list"
> vAge<-as.vector(unlist(users[3]))
> mode(vAge)
[1] "numeric"
> vAge
[1] 20 26 29 49 39 53 48
> vName<-as.vector(unlist(users[2]))
> mode(vName)
[1] "character"
> vName
[1] "Tom" "Jack" "Mary" "Merry" "Jerry" "Jucy" "Lucy"

上面两个R文件写好代码之后,在Console执行,记得在文件夹名字两侧加引号

> runApp('barplotDemo')

运行成功后,可以看到效果如下:

点击【Click Me】,可以看到条形图

到此结束~

R基础学习(三)-- 简单练习(shiny+mysql+barplot)的更多相关文章

  1. R基础学习(一)-- 连接mysql数据库

    测试环境:win10+RStudio (1)在Console加载两个插件 >install.packages('DBI') Installing package into ‘C:/Users/l ...

  2. R基础学习

    R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...

  3. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  4. Python基础学习三

    Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...

  5. Django基础学习三_路由系统

    今天主要来学习一下Django的路由系统,视频中只学了一些皮毛,但是也做下总结,主要分为静态路由.动态路由.二级路由 一.先来看下静态路由 1.需要在project中的urls文件中做配置,然后将匹配 ...

  6. Java基础学习笔记二十四 MySQL安装图解

    .MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...

  7. salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)

    在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresi ...

  8. JAVA多线程基础学习三:volatile关键字

    Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...

  9. Spring基础学习(三)—详解Bean(下)

    一.Bean的生命周期 1.概述      Spring IOC容器可以管理Bean的生命周期,Spring 允许在Bean的生命周期的特定点执行定制的任务.      Spring IOC容器对Be ...

随机推荐

  1. bzoj千题计划231:bzoj1997: [Hnoi2010]Planar

    http://www.lydsy.com/JudgeOnline/problem.php?id=1997 如果两条边在环内相交,那么一定也在环外相交 所以环内相交的两条边,必须一条在环内,一条在环外 ...

  2. bzoj千题计划195:bzoj2844: albus就是要第一个出场

    http://www.lydsy.com/JudgeOnline/problem.php?id=2844 题意:给定 n个数,把它的所有子集(可以为空)的异或值从小到大排序得到序列 B,请问 Q 在  ...

  3. Github 开源项目(二) jsmpeg-vnc

    参考文章:http://blog.csdn.net/qq_28877125/article/details/70141713 适用于Windows的低延迟,高帧率屏幕共享服务器以及用于浏览器的客户端 ...

  4. MySql数据库表的查询操作

    http://www.cnblogs.com/whgk/p/6149009.html 优化:http://www.ihref.com/read-16422.html MYSQL常用的几种连接查询方法

  5. 【问题收集·知识储备】Xcode只能选择My Mac,不能选择模拟器如何解决?

      网友问题:请问打开一个应用,只能选择My Mac,不能选择模拟器如何解决? 答案:             下面将问答过程记录如下:     CHENYILONG Blog 请问打开一个应用,只能 ...

  6. Python 入门基础2 --基本数据类型、运算符

    本节目录 一.IDE(集成环境的安装) 二.基本数据类型 三.输入输出 四.运算符 五.后期补充内容 一.IDE(集成环境的安装) 安装pycharm 注:快捷键: 1.ctrl + ? :注释此行, ...

  7. Linux内核启动流程分析(一)【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...

  8. poj1033

    模拟题,注意不需要移动的情况要特殊输出 #include <cstdio> #include <cstring> #include <cstdlib> using ...

  9. 如何在Axure中使用FontAwesome字体图标

    Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小.颜色.阴影或者其它任何支持的效果. FontAwesome应用在web网页开发中非常方便, ...

  10. 原生js实现ajax跨域(兼容IE8,IE9)

    html设置meta标签兼容360兼容模式和IE怪异模式 <meta http-equiv="X-UA-Compatible" content="IE=9;IE=8 ...