测试环境: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千题计划283:bzoj4516: [Sdoi2016]生成魔咒(后缀数组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=4516 考虑在后面新加一个字母产生的影响 假设是第i个 如果不考虑重复,那么会增加i个不同的字符串 考 ...

  2. 解决 phpmyadmin #2002 无法登录 MySQL 服务器

    将 “phpMyAdmin/libraries”文件夹下的config.default.php文件中的 $cfg['Servers'][$i]['host'] = 'localhost'; 修改为 $ ...

  3. SQLSTATE[42000]

    SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT() ...

  4. Hash::make与Hash::check

    调用方法之前要先去引用: use Illuminate\Support\Facades\Hash; 可以调用 Hash 门面上的 make 方法对存储密码进行哈希: $pwd = Hash::make ...

  5. requests(二): json请求中固定键名顺序&消除键和值之间的空格

    继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定  2.服务端对于接收到的json数据中,若key和value之间有空格, ...

  6. Comparable和Comparator的区别&Collections.sort的两种用法

    在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...

  7. 安装informatic过程中的错误

    1.Check if the DISPLAY variable is set export DISPLAY=192.168.3.201:0.0 在注销用户并切换到oracle或者infa 用户,就可以 ...

  8. vistual studio 去除 git 源代码 绑定

    第一次碰到这个问题,想将源代码签入TFS管理.添加到源码管理后,默认添加到Git源码管理. 研究过后,发现: 1)删除框内文件 2)Vs->工具->选项->源代码管理->插件管 ...

  9. Linux磁盘分区UUID的获取及其UUID的作用

    注:UUID-Universally Unique IDentifiers全局唯一标识符 一.Linux磁盘分区UUID的获取方法 1.[san@localhost ~]$ ls -l /dev/di ...

  10. axios笔记

    参考:http://www.cnblogs.com/Upton/p/6180512.html https://cloud.tencent.com/developer/article/1098141  ...