您的位置:首页 > 移动开发

将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就是个坑QAQ

1, 这需要使用到rsconnect包,关于怎么用rsconnect,请点这个链接:

《Getting started with shinyapps.io》

http://shiny.rstudio.com/articles/shinyapps.html

2, 如果我的推理没错的话,你应该会采用如下步骤:

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  R语言 Shiny web Linux