最近RSS订阅给我推送一篇关于R tips的博文,看完感觉甚好,这里稍微做些了批注作为我的备忘录。大家感兴趣可以去看Ten Time-Saving R Hacks
1. Downloading and reading files straight from source
有时候我们可以为了展现一个可重复的代码,可以直接从网上下载数据而不是附上数据。这时候我们可以考虑用 readr
包的函数,比如 read_csv()
或者 read_rds()
my_df <- readr::read_csv(url("https://www.website.com/data.csv"))
如果数据在Github仓库的话,可以在下raw file的时候考虑加 ?raw=true
到URL后面,这可能会加速下载
speed_dating_data <- readr::read_rds(url("https://github.com/keithmcnulty/speed_dating/blob/master/speed_data_data.RDS?raw=true"))
如果你的文件是readr不能解析的,就可以考虑用基本的R下载函数download.file()
download.file("https://github.com/keithmcnulty/speed_dating/blob/master/speed_data_data.RDS?raw=true", destfile = "speed_dating_data.RDS")
speed_dating_data <- readRDS("speed_dating_data.RDS")
但这行命令我却报错了
download.file("https://github.com/keithmcnulty/speed_dating/blob/master/speed_data_data.RDS?raw=true", destfile = "speed_dating_data.RDS") trying URL 'https://github.com/keithmcnulty/speed_dating/blob/master/speed_data_data.RDS?raw=true' Content type 'application/octet-stream' length 250989 bytes (245 KB) downloaded 245 KB > speed_dating_data <- readRDS("speed_dating_data.RDS") Error in readRDS("speed_dating_data.RDS") : ReadItem: unknown type 0, perhaps written by later version of R
估计是这个原因
Cannot load RData in tests
在下数据的时候,你可能会需要频繁的验证自己的账号密码等等,这时候可以考虑用 boxr
这类包,其储存了你的验证信息,这样就可以直接下载而不用反复填写账号了。
2. Storing your credentials for regular use
如果你在连接数据库或者其他网上服务的时候需要频繁的填写密码,就可以考虑看这条了。讲的是利用R的隐藏文件:.Renviron
。
3. RStudio’s shortcut keys
讲了三个快捷键
- %>% 对应的快捷键:Ctrl-Shift-M
- <- 对应的快捷键: Alt +
-
- 以及找文件或者函数的快捷键:ctrl +
.
但第三个快捷键我测试的时候发现,如果你是在输入法状态下,是没效果的。
4. Global chunk options in RMarkdown
全局性地更改Rmarkdown的配置
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
5. Easy pasting of ggplots with the patchwork
package
patchwork包可以快速对齐或者布局ggplot2图像
6. Smoother dependency management using Renv
对于R包开发者,包依赖管理的利器:Renv
7. Multitask with RStudio’s Jobs(强推!!!!)
R studio在1.2之后,可以把任务放到本地(后台)去跑,然后你可以继续地做其他的操作。
这一点对于R studio severer尤其爽我感觉,因为服务器上的R你一个账号只能跑一个任务……
但我同样遇到一个问题,在文档中说 comment 那行会出来,但我自己跑的时候却没有comment的信息。
8. Rename all variables in scope
批量在脚本中改同一个变量名:Ctrl-Alt-Shift-M
9. Using .
to keep piping
管道操作里面用 .
代替上一个管道的输出结果
10. Immediately invoked display
()可以打印变量
## What I usually see
mt_count <- mtcars %>% dplyr::count(cyl)
mt_count
# A tibble: 3 x 2
cyl n
<dbl> <int>
1 4 11
2 6 7
3 8 14
## Immediately invoked display
(mt_count <- mtcars %>% dplyr::count(cyl))
# A tibble: 3 x 2
cyl n
<dbl> <int>
1 4 11
2 6 7
3 8 14
对于Rmardown也是很有帮助的
网友评论