将R的Shiny App部署到网上遇到的一些坑QAQ
2016-07-12 15:02
399 查看
假设你的App脚本已经写好了(里面至少包含Server.R和ui.R)
一,Windows下通过cmd执行App
只需两个步骤:1. 在系统变量Path中添加:E:\你的R安装路径\bin
2. 运行cmd,执行:R -e “shiny::runApp(‘C:\Windows下你的App路径\你的App名称’)”
这个时候呢,cmd会提示里进入到一个网站:127.0.0.1:XXXX,在浏览器点进去就OK啦,
然并卵,这并不算部署到网上=。=
二,使用Windows通过shinyapps.io部署到网上
对,这TM就是个坑QAQ1, 这需要使用到rsconnect包,关于怎么用rsconnect,请点这个链接:
《Getting started with shinyapps.io》
http://shiny.rstudio.com/articles/shinyapps.html2, 如果我的推理没错的话,你应该会采用如下步骤:
library(rsconnect) rsconnect::setAccountInfo(name='你注册时取的名字', token='一长串字符', secret='一长串字符') rsconnect::deployApp('C:\\Windows下你的App路径\\你的App名称')
3,然后就无情的报错了:
Failed to lint file 'Server.R' The linter failed with message: invalid multibyte string at '<8d>'<2c>','乱码')'
4,卧槽,multibyte string是什么鬼 ?_?
在网上查了一下,这个错误应该是数据编码的问题。我读取数据用的是read.csv(),但在Windows下无论怎么改encoding和fileEncoding参数都没有卵用。另外,如果用cmd执行,read.csv()建议使用相对路径(在你的App文件夹下再创建一个data文件夹,把用到的数据放进去,然后read.csv(“.\数据.csv”))。
总而言之我(作为一个菜鸡)感觉,用Windows部署ShinyApp就是一个大坑。没办法,只能改换Linux。
三、使用Linux(CentOS 6)部署
Linux的好处是,只要我在Rstudio里面能执行这个App,也就是shinyApp(ui, Server)能执行,跳出来一个网页,那么它保存成Server.R和ui.R之后通过rsconnect就一定能部署到网上。然后你以为这样就解决问题了?
并没有,还是read.csv()出错,在Windows下,我的命令如下,不会报错
tree=read.csv('数据.csv',header = T)
但是在Linux下,需要改encoding和fileEncoding参数。如果数据里面包含中文,建议将encoding 设为’UTF-8’,fileEncoding 设为 ‘GB2312’(有时候得设成GBK),然后就可以正常使用和展示数据了。
tree=read.csv('数据.csv',header = T,encoding = 'UTF-8', fileEncoding = 'GB2312')
App成品网址在下方,测试用的所以做的很简陋:
https://guquq.shinyapps.io/app110/
相关文章推荐
- java-WEB中的监听器Lisener
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- GUI - Web前端开发框架
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Extjs4.0 最新最全视频教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制