估计每个爱好编程的都想某天可以开发出一个专属于自己的软件or应用,在下也是。然而由于当初入门编程的时候偷懒特地避开了那些以开发为目的源代码级的语言(比如说java,C和C++)而选择了R,我离这个目标估计是越走越远了。虽然R语言拥有自己的GUI开发工具,但是由于不能封装所以只能给留给自己看。不过好在Rstudio公司开发的Shiny包可以基于R语言制作web端的APP,依托于互联网,算是间接实现了封装并传播的功能。不过shiny所实现的web app只能实现些比较简单的功能,设计出来的初衷是为了在结果展示的时候作为Data Product来保证展示的过程更流畅更直观。所以想做游戏的还是安心学java吧。这次想分享的是我自己闲着没事儿整出来的一个阉割版的百度地图,照着Shiny Gallery里面的某些大神那里得到的灵感,闲着没事儿去里面转转,确实可以学到很多东西。
Shiny
Shiny在这里就不过多介绍了,简言之他就是一个可以将R代码的架构转换为HTML架构的神奇的东西,换言之就是某尊大神将HTML给封装成了R语言的一个包大概的工作原理是这样的
一般网页开发分为前段和后端,前端差不多就是网页里的那些图标啊排版啊啥的,后端就是在你对网页进行操作时,网页该如何进行反馈的交互逻辑。一般即使有HTML文件也是用不了的,因为没有后端的话这网页除了看没什么用,不过牛逼的是Shiny还能帮你把后端给组织好。跟web开发类似,Shiny包里的架构逻辑也是需要分好前端和后端的,分别用
ui.R
和
server.R
两个文件来储存。先来个简单的:
Sample 1
这是一个用来反映Kmeans均值聚类实时效果的简单应用,可以自己DIY中心点个数以及要聚类的两个变量,数据集是鸢尾花。
界面是这样的,目前这图里反应的是将Sepal.Length和Sepal.Width分为3类后,样本分布情况。
代码也分为前端和后端,前端是ui,后端是sever
## The UI of the web
library(shiny)
library(ggplot2)
ui <- shinyUI(fluidPage(
headerPanel(title = 'Test Kmeans'),
sidebarPanel(
selectInput(inputId = 'Col',label = 'The Variables',
choices = c('Sepal.Length','Sepal.Width','Petal.Length','Petal.Width'),
selected = c('Sepal.Length','Sepal.Width'),
multiple = T),
numericInput(inputId = 'center',label = 'Centroids',value = 3,min = 1,max = 10,step = 1),
submitButton(text='submit')
),
mainPanel(
h1('The result of Kmeans'),
plotOutput(o