RStudio Cookbook
2020-10-12
- 使用 RMarkdown 的
child
参数,进行文档拼接。 - 这样拼接以后的笔记方便复习。
- 相关问题提交到 Issue
1 Ctrl
+ .
go to function / file
如果图片、Rmd等文件在统一路径中,那么可以通过快捷键,Ctrl + .来快速打开,类似于Mac的spotlight搜索。
暂时不知道怎么加入图片,貌似要先上传,这个略显麻烦,还没要找到快捷的方法。
2 Blogdown
getwd()
setwd('~/Desktop/blog4.0')
blogdown::new_site()
首先新建一个文件夹,然后setwd()
路径,最后blogdown::new_site()
文档中就产生了content
和public
文件夹,这个就是用于上传的。
3 万能创建post的办法
无论在default还是特定的project中,是要重新设置下路径,也就是博客文件夹,那么就可以每次使用Addins
里面New Post
来创建新的post。
getwd()
setwd('/Users/JiaxiangLi/Desktop/blog4.0')
4 解决更新文章的办法
有时候新建一个post
,无法在public
中成功转录,这个时候只需要重新new_site()
一下,把about.Rmd
、content
、config.toml
的文件覆盖一下就好了。
5 blogdown无法创建build_site()
可能的情况
新建slug
最好改为英文,中文貌似不是特别支持。
在操作涉及路径的代码时,最后设为不跑的情况,表头改为```而非{r}
6 .Rmd
文件最好不要用中文命名
.Rmd
文件最好不要用中文命名,最常见的问题就是,inline code 的结果看不到。
另外经常报错。如,
pandoc document conversion (transform) failed with error 67.
- What I realized is that this error is fixed when I use a smaller filename. So, If the filename is higher than 45 characters long (including ‘.html’) then there is this error popping up, otherwise everything is fine. From pandoc document conversion failed with error 67 · Issue #6 · ramnathv/rcstatebin
7 展示表格
有时候我们要展示模型字段,但是字段可能有100多,这个时候我们可以选择这一列,然后然后制定出5列的表格,这需要转置成矩阵,再转置成表格,相关代码如下:
8 批量group_by
求变量的均值
这个数据是公开的,但是 raw.githubusercontent.com 无法访问的话,会出问题。
dataset2 <-
dataset %>%
select(-X1) %>%
filter(!is.na(CO2),!is.na(sd)) %>%
group_by(date) %>%
summarise_at(vars(CO2,sd), mean)
# dataset2 %>% write_csv('CO2hm_mean.csv')
select(-X1)
是为了把index删除,不作为变量。
group_by
就是切片。
summarise
就是对相应变量执行汇总函数。
函数选择了mean
。
9 使用make_datetime
处理时间格式问题
dataset3 <- read_csv("https://jiaxiangbu.github.io/picbackup/CO2hm.csv")
library(lubridate)
dataset4 <-
dataset3 %>%
mutate(date2 = make_datetime(YY,MM,DD,H,M))
# dataset4 %>% write_csv('CO2_hm2_new_date.csv')
10 整理笔记
reflow comment shift
+ cmd
+ /
11 设置url
的快捷键
在输入完文字后,空一格,然后输入链接,选中,然后按快捷键,就完成了,插入超链接的过程。
12 查看函数
Ctrl
加上点击函数,可以查看函数的细节。
13 .Rmd
文档中看不到结果
注意文件夹,.Rproj
的路径,不要用中文,全部英文命名,因为win7的RStudio很渣的,太娇气了。
否则在.Rmd
文档中看不到结果。
15 替换时的快捷键
- 下一个是,ctrl + G
- 上一个是,cmd + shift + G
- 替换是,cmd + shift + J
- 不用点鼠标,麻烦
16 RStudio tab 快捷键
可以在修改快捷方式里面修改。 这里推荐跟Chorme相同。
17 在替换框也可以使用正则化表达
18 fold/unfold
- alt + cmd + O 全部fold
- alt + cmd + L 单独fold
- shift + alt + cmd + O 全部unfold
- shift + alt + cmd + O 全部unfold
19 批量查看R项目中每个object的大小
## 56 bytes
## 56 bytes
## 56 bytes
## 91.7 Kb
## 5.3 Kb
## NULL
\(\Box\)无法用map
执行。
参考
- Size of each object in R’s workspace | R-bloggers 思想来自这里
- R: Size of list elements 但是这个包使用不了。
20 Shift
+ Alt
+ G
\(\to\) Go,到达哪一行
因此,比如表头有很多library
的代码,这个时候,n=1
,现在coding的行数是n=100
,因此可以考这个快捷键,快速切换。
21 Alt
+ \(\uparrow\)
或者\(\downarrow\),可以选中一行,上线直接换行。
22 Shift
+Alt
+J
是切换chunk
23 可以直接Ctrl+Shift+/
把几行缩写成一行,空行的,中间不插行。
注意,8-9、11-12、15-16行,是两行,但是是一个内容,所以可以通过快捷键合并。
如图看到,已经合并了。
再利用Remedy
包生成链接的快捷键,就可以形成超链接了。
24 Ctrl + Shift + O 出边栏的目录
25 批量换行
.Rmd
文件中用正则化替换时,
\n1.
可以换行。
26 合并文件
file.append('cc1.Rmd','cc2.Rmd')
只能两个进行合并。 但是已经足够了,加个for循环就好。
for (i in list1){
file.append("4cb.Rmd",i)
}
26.1 参考
27 RStudio快捷键
- shift + alt + up => 复制上一行,切换到下一行。
Ctrl/Cmd
+ D 删除一行,这样比如一大串,占了三行的,这样删除很快,适合整理list的时候。- 缩进:
control
+[
/]
,选中或者光标置于文段前中后都可以。 - 重置缩进:
cmd
+I
remedy
的H1-6用 Alt 不要用 Ctrl 否则Ctrl + 2 focus on代码框的功能就没用了。
28 加速安装包的方式。
- Speeding up package installation
options(Ncpus = 3)
表示用三个核安装包。
29 file.path
- r - Function to concatenate paths? - Stack Overflow
类似于python的
os.path
包。
30 统计自己写了多少文章。
file.path(
getwd(),
dir()[5],
"post"
) %>% dir() %>%
str_subset("(.Rmd)$")
dir() %>%
str_subset(".Rmd$")
dir() %>%
str_extract("(.\\w{1,})$") %>%
as_tibble() %>%
group_by(value) %>%
count() %>%
arrange(desc(n))
dir() %>%
str_subset(".Rmd$") %>%
str_replace(".Rmd$","")
31 R保存模型的方式
save(topDawg , file="myRFobject.RData")
32 文章如何整理,查看位置
file.path(getwd(),"content","post")
中,
file.path
和
getwd()
一起来确定,要执行的路径是哪?
file.path(getwd(),"content","post") %>%
dir() %>%
str_subset("(.Rmd)$") %>%
as_tibble() %>%
separate(value, c("year","month","day","name"),
extra = "merge",
remove = FALSE) %>%
filter(
name %in% str_subset(name,"dplyr")
)
33 fold的bug
整理.Rmd
的思路,
all fold (alt+cmd+o)后,直接用alt + up/down调整。
先shift+ … 再fold
34 保存对象的方法.RData
save(data,file="data_wj.RData")
rm(data)
rm
是删除对象的意思。
load("data_wj.RData")
load
是重录入对象。
35 保存表的方法
data %>% head()
查询表前6行的表现。
getwd()
查看当前路径。- 设置路径的方法,在pane中选中,
Files
\(\to\)...
\(\to\)Set the working directory
data %>% write_csv("D:/wj/wj.csv")
其中write_csv
写.csv
文件。- 保存的
.csv
文件,记得改为ANSI
1编码。因为这样中文不会乱码。
35.1 按照时间命名保存文件
setwd('d:/r')
library(RODBC)
con <- odbcConnect('Impala')
data1 <- sqlQuery(con,"select * from xxx limit 10")
write.csv(data1,file = paste(Sys.Date(),".csv"))
每一行代码具体的意思为:
- 设置路径
- 使用常用链接数据库的包
RODBC
- 设置impala的连接函数
con
,这个以个人习惯自定义 - 尝试链接某一个数据表
xxx
,其中是常见的sql语言,建立为data1
- 保存到本地,命名为当日时间
36 Scroll up a line only for Window
36.1 cite RStudio
rstudioapi::versionInfo()
rstudioapi::versionInfo()
这个可以放到publications也是不错。
RStudio的引用。
37 探查有哪些包没有安装
get_package_name <- function(x){
read.table(x, sep="\t") %>%
mutate(table = str_extract(V1,paste("library\\(","[:alnum:]{1,}","\\)",sep="")),
table = str_remove_all(table,"library|\\(|\\)")) %>%
filter(!is.na(table)) %>%
distinct(table)
}
file.path(getwd(),"content","post") %>%
dir() %>%
str_subset("(.Rmd)$") %>%
as_tibble() %>%
mutate(value = file.path(getwd(),"content","post",value)) %>%
mutate(table = map(value,get_package_name)) %>%
unnest() %>%
distinct(table) %>%
anti_join(
installed.packages() %>% as_tibble(),
by = c("table"="Package")
) %>%
.$table %>%
map(install.packages)
38 保存自己安装了那些包
为了安装方便, 记录下自己安装了多少包, 然后存起来,重装系统的时候,批量装。
38.1 甘特图和时间规划
直接建立一个csv文档,可以在RStudio直接调用,不需要重新切换到Excel。
38.2 formattable::percent
非常适合展示
39 Strike Line,可以设置快捷键
shift + option + cmd + h
40 ctrl + shift + F
快捷键 可以查询路径内的关键词。 # 选择project options而非global options
这里选择project options而非global options, 因此缩进就可以一次四格,
- 满足python的默认缩进
- 方便sublist的书写
41 安装包报错的debug步骤
安装包出bug的时候,围绕以下步骤进行(jcblum 2018),
- 点击
Session
,点击Restart R
remove.packages(...)
和 重装需要的包- 点击
Session
,点击Restart R
library
包,一般情况下都是成功的。
举一个实例。
安装失败
Error: package or namespace load failed for ‘ggplot2’ in get(Info[i, 1], envir = env): lazy-load database '/Users/JiaxiangLi/Library/R/3.4/library/ggplot2/R/ggplot2.rdb' is corrupt
Restart R,并且卸装和重装包
Restart R,
library(ggplot2)
Error in value[[3L]](cond) : Package ‘ggplot2’ version 2.2.1 cannot be unloaded: Error in unloadNamespace(package) : namespace ‘ggplot2’ is imported by ‘caret’ so cannot be unloaded
依然报错,这里提示要‘caret’ so cannot be unloaded
因此library(caret)
即可。
42 电脑RStudio显示打不开
- 电脑RStudio打不开,RStudio 报错。内存问题。
- 开发版会出现死机、链接等问题。
43 RStudio的替换可以实现正则化
RStudio的替换可以实现正则化,如,|。
替换成\n
。
44 更新包的注意事项
每次系统更新包的时候,都要问是否重启R,选不就好了嘛。
45 package Win 7 稳定版本号
installed.packages() %>% as.data.frame() %>%
filter(Package == 'remedy') %>%
write_excel_csv('180805_package_stable_list.csv')
remedy@0.0.0.9600
部分解决问题了。
list 下载地址 # 穿透文件找关键词 (Find in Files)
Shift + CMD + F 可以穿透文件找关键词,非常好用 支持正则化、支持筛选同一后缀名查询。 是可视化的cmd代码。
46 整理笔记
可以靠这样整理笔记。
比如,第82
行是我们需要汇总到的地方,其他都是零散的笔记,一起整理起来。
有一个bug,这个不是动态更新的,因此当其他行位置发生变化时,对应的行数不会相应变化,需要重刷,有点麻烦。
整理Hive 和 英语笔记的时候,配合find in files,可以多屏整理,不需要在一个Rmd,来回跳转。
47 代码耗时监控
先说最新版本的快捷键,
Ctrl+Shift+Alt+P
,可以监控代码的耗时和占用内存。
操作方式是选中代码然后,按快捷键。
会有两个输出,
- flame graph,主要从每个code执行的路径来看,耗时和内存占用
- data,主要从汇总角度,看耗时和内存占用的情况。
具体地,见截图。
鼠标点上去,可以显示具体一个job的耗时。
以上是从快捷键角度使用这个功能,一下从code角度阐述。
改功能来自包profvis
,之后以下代码后,会产生同样的效果。
library(profvis)
profvis({
data(diamonds, package = "ggplot2")
plot(price ~ carat, data = diamonds)
m <- lm(price ~ carat, data = diamonds)
abline(m, col = "red")
})
无论从快捷键和代码执行两种方式上,功能简单好用,那么接下来说说这个包的历史。
lineprof is now deprecated in favour of profvis. Please use that instead. (Wickham 2018)
该包原先的 idea 来自 Wickham (2018) 的包lineprof
,但是最后并入了包profvis
。
包lineprof
在 张丹 (2014) 的书中也介绍到。
Profvis is a tool for helping you to understand how R spends its time. (RStudio 2018)
包profvis
主要解决问题也是让使用者认识R如何耗时的。 (RStudio 2018)
It provides a interactive graphical interface for visualizing data from
Rprof
.
并且主要使用了包Rprof
的结果。
48 R chunk folding 功能
############ LIBRARIES #####
在R chunk中,可以fold的。
50 快捷键的实现逻辑
参考support
If you made a mistake, you can press Backspace to clear a single key combination, or Delete to reset that binding to the original value it had when the widget was opened.
The RStudio keybindings are saved as JSON files in the directory ~/.R/rstudio/keybindings/ – you can find the bindings for the editor and RStudio itself at:
~/.R/rstudio/keybindings/rstudio_commands.json
~/.R/rstudio/keybindings/editor_commands.json
路径是read*
不出来的
editor_bindings.json
未使用
{
"add2md::commit_work" : "Alt+M",
"add2md::doc_note" : "Shift+Cmd+N",
"add2md::m1" : "Alt+I",
"remedy::h1r" : "Cmd+1",
"remedy::h2r" : "Cmd+2",
"remedy::h3r" : "Cmd+3"
}
{
"devtoolsLoadAll" : "Shift+Cmd+L",
"modifyKeyboardShortcuts" : "Shift+Alt+Cmd+P",
"moveTabLeft" : "",
"moveTabRight" : "",
"newRNotebook" : "",
"nextTab" : "Alt+Cmd+Right",
"previousTab" : "Alt+Cmd+Left"
}
见路径
51 复制 Terminal 的代码
52 RStudio v1.4 Preview
Allaire (2020)
- 好处是,可以让人熟悉 markdown,可视化和交互化做了更新。
@
插入 bib 更加直接了。- 插入图片,可以直接
Ctrl+Shift+I
插入,附件会复制到image/
- Cross References 也可以 code completion,IDE global search 也可以查询。
下载地址
https://s3.amazonaws.com/rstudio-ide-build/desktop/windows/RStudio-1.4.904.exe
参考文献
Allaire, J. J. 2020. “RStudio V1.4 Preview: Visual Markdown Editing.” RStudio Blog. 2020. https://blog.rstudio.com/2020/09/30/rstudio-v1-4-preview-visual-markdown-editing/.
jcblum. 2018. 2018. https://community.rstudio.com/t/is-stat-qq-line-in-ggplot2-2-2-1-cran-latest/8983.
RStudio. 2018. “Profvis — Interactive Visualizations for Profiling R Code.” Profvis. 2018. https://rstudio.github.io/profvis/.
Wickham, Hadley. 2018. “Lineprof.” 2018. https://github.com/hadley/lineprof.
张丹. 2014. R的极客理想: 工具篇. 机械工业出版社.
- 美国国家标准学会(American National Standards Institute,ANSI)
- UTF-8(8-bit Unicode Transformation Format) 255种可能性。