2. 开发环境搭建:从零铺好路
做任何项目,环境搭得对不对,直接决定后面能走多远。
Shiny 应用部署也一样。你别看它表面上就是个网页,背后是 R 语言、RStudio、Shiny 包这三件套在干活。任何一个环节没装对,后面都跑不起来。
这一章,咱们就把这三样东西装好,再跑通你的第一个 Shiny 应用。说白了,就是给你铺好路,确保后面不出幺蛾子。
2.1 安装 R 语言 —— 拿什么跑代码?
R 是整个 Shiny 应用的计算核心。没有 R,后面一切都免谈。
下载路径
去 CRAN(Comprehensive R Archive Network)官网,找对应操作系统的安装包。我个人习惯直接选清华或中科大的镜像,下载速度快得多。
关键步骤
- Windows 用户:运行 .exe,一路默认即可。注意安装路径不要带中文。
- macOS 用户:下载 .pkg 文件,双击安装。
- Linux 用户:通过包管理器安装,比如 Ubuntu 就是
sudo apt install r-base。
我曾经吃过这个亏:安装路径里带了中文,结果后面装包全都报错,排查了半天才发现是路径问题。你想想看,配错了路径,后续所有操作都没法跑。
装完后,打开终端或者命令行,敲一下这个命令验证是否成功:
R --version
能看到版本号,就说明 R 已经装好了。
版本选择建议
| 场景 | 推荐版本 | 理由 |
|---|---|---|
| 学习 / 开发 | 最新稳定版 | 功能全,社区支持好 |
| 生产部署 | 次新 LTS 版 | 稳定性优先,兼容性好 |
| 旧系统兼容 | 根据系统选择 | 避免依赖冲突 |
2.2 安装 RStudio —— 给你一个好用的工位
RStudio 是一个集成开发环境(IDE),说白了就是让你写代码更舒服的地方。
它本身不干活,但是能帮你管理项目、调试代码、预览图形,对 Shiny 开发来说非常好用。
安装步骤
- 去 RStudio 官网下载对应操作系统的安装包。
- 双击运行,默认安装即可。
我个人的习惯是,安装完成后先调几个设置:
- 设置工作目录(Tools → Global Options → Default working directory)
- 把 Console 的字体调大一点,眼睛不费劲。
- 打开日志区(左上角 View → Panes → Move Toolbar to Top),方便调试时看到输出。
RStudio 有两个版本:桌面版和服务器版。咱们做开发用桌面版就行。服务器版是给多人协作用的,后面部署章节会提到。
2.3 安装 Shiny 包 —— 让 R 学会做网站
R 本身只做计算,不会做网页。Shiny 包就是那个让它变成 Web 框架的核心工具。
在 RStudio 的 Console 里,输入以下命令:
install.packages("shiny")
等它跑完,不出错就算装好了。
但为什么我推荐你多装几个包?因为实际项目中,Shiny 经常要配合其他包一起用:
- shinydashboard:快速搭建仪表盘布局
- shinythemes:一键换皮肤
- DT:显示交互式表格
- plotly:做交互式图表
核心就一句话:先装 shiny 包,它能让你跑起来。其他的后面按需加。
常见安装问题
问题 1:网络超时
国内网络访问 CRAN 有时很慢。解决办法:设置国内镜像。
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
install.packages("shiny")
问题 2:缺少系统依赖(Linux)
我记得有一次在 CentOS 上装 Shiny,报错说缺了 libcurl。查了一下发现,Shiny 依赖一些系统库。
Ubuntu 用户可以这样装:
sudo apt install libcurl4-openssl-dev libssl-dev libxml2-dev
2.4 创建第一个 Shiny 应用 —— 看它能不能跑
环境搭好了,咱们跑一个最简单的例子,验证一下。
在 RStudio 里,新建一个 R 脚本(File → New File → R Script),输入以下代码:
library(shiny)
ui <- fluidPage(
titlePanel("我的第一个 Shiny 应用"),
sidebarLayout(
sidebarPanel(
sliderInput("bins", "分箱数量:", min = 1, max = 50, value = 30)
),
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
shinyApp(ui = ui, server = server)
保存后,点击 RStudio 右上角的 Run App 按钮,或者直接按 Ctrl+Shift+Enter(Mac 是 Cmd+Shift+Enter)。
如果一切正常,你会在浏览器里看到一个带滑动条的页面,拖动滑块直方图会变化。你想想看,我第一次看到这个反馈时,也觉得这个反馈太酷了。
注意:如果页面提示 “Application failed to start”,大概率是包没装对,或者端口被占用了。关掉其他 R 进程,重新 run 一遍试试。
2.5 核心概念:UI 与 Server
刚才那个例子虽然短,但它代表了 Shiny 应用的标准结构:
| 组成部分 | 作用 | 类比 |
|---|---|---|
| ui | 定义页面布局和输入控件 | 网站的 HTML 模板 |
| server | 处理数据、计算结果、生成输出 | 后端的处理逻辑 |
| shinyApp() | 把 ui 和 server 绑在一起启动应用 | 启动器 |
这个模式会贯穿整门课程。后面每章你都会看到它,只是 ui 和 server 会越来越复杂。
写 Shiny 应用时,不需要手动写 HTML、CSS 或 JavaScript。Shiny 的 fluidPage 和各种 layout 函数会自动帮你生成前端代码。把精力集中在后端的逻辑上就对了。
2.6 本章小结
我们做完了三件事:装了 R、装了 RStudio、装了 Shiny 包,还跑通了第一个应用。
嗯,现在你的开发环境已经准备就绪了。后面所有章节的内容,都会在这个基础上展开。记得保持这个环境干净整洁,别在云服务器上乱装东西,不然以后排查问题有你哭的。