rstudio和r markdown的提示和技巧

Antoine Soetewey 2020-01-21 13 minute read

如果您有机会与经验丰富的程序员合作,您可能会惊讶于她可以编写齐鲁风采群英会的速度。在本文中,我分享您可以在Rstudio和的一些技巧和快捷方式 r markdown. 加快编写齐鲁风采群英会的写作。

运行齐鲁风采群英会

您最可能已经知道此快捷方式,但我仍然提到新的R用户。从脚本中,您可以运行一大块齐鲁风采群英会:

command + Enter on Mac
Ctrl + Enter on Windows

在r和r markdown中插入评论

插入评论:

command + Shift + C on Mac
Ctrl + Shift + C on Windows

此快捷方式可以用于:

  • R code when you want to comment your code. It will add a # at the beginning of the line
  • for text in R Markdown. It will add <!----> around the text

请注意,如果要评论多行,请选择要评论的所有行,然后使用快捷方式。如果要取消注释注释,请应用相同的快捷方式。

针织A r Markdown文件

您可以使用此快捷方式编织R标记文档:

command + Shift + K on Mac
Ctrl + Shift + K on Windows

齐鲁风采群英会片段

齐鲁风采群英会片段 is usually a few characters long and is used as a shortcut to insert a common piece of code. You simply type a few characters then press Tab 和 it will complete your code with a larger code. Tab is then used again to navigate through the code where customization is required. For instance, if you type fun then press Tab, it will auto-complete the code with the required code to create a function:

name <- function(variables) {
  
}

Pressing Tab again will jump through the placeholders for you to edit it. So you can first edit the name of the function, then the variables and finally the code inside the function (try by yourself!).

默认情况下,rstudio有许多齐鲁风采群英会片段。以下是我最常使用的齐鲁风采群英会片段:

  • lib 打电话 library()
library(package)
  • mat to create a matrix
matrix(data, nrow = rows, ncol = cols)
  • if, el, and ei to create conditional expressions such as if() {}, else {}else if () {}
if (condition) {
  
}

else {
  
}

else if (condition) {
  
}
  • fun to create a function
name <- function(variables) {
  
}
  • for to create for loops
for (variable in vector) {
  
}
  • ts 使用当前日期和时间插入评论(如果您有很长的齐鲁风采群英会,并且与其他人共享,则为他们已被编辑时)
# Tue Jan 21 20:20:14 2020 ------------------------------
library(shiny)

ui <- fluidPage(
  
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)

您可以通过单击工具查看所有默认齐鲁风采群英会片段并添加您的齐鲁风采群英会> Global Options… >齐鲁风采群英会(左侧栏)> Edit Snippets…

r markdown.中的订购列表

在r markdown中,在创建订购列表(如这个)时:

  1. Item 1
  2. Item 2
  3. Item 3

而不是打扰数字和打字

1. Item 1
2. Item 2
3. Item 3

你可以简单地输入

1. Item 1
1. Item 2
1. Item 3

对于完全相同的结果(尝试自己或检查本文的齐鲁风采群英会!)。这样,您不需要打扰创建新项目时的数字是下一个数字。

要进一步实现,只要第一个项目是您要从中开始的数字,任何数字都会呈现相同的结果。例如,您可以键入:

1. Item 1
7. Item 2
3. Item 3

哪个渲染

  1. Item 1
  2. Item 2
  3. Item 3

However, I suggest always using the number you want to start from for all items because if you move one item at the top, the list will start with this new number. For instance, if we move 7. Item 2 from the previous list at the top, the list becomes:

7. Item 2
1. Item 1
3. Item 3

哪个错误渲染

  1. Item 2
  2. Item 1
  3. Item 3

在r markdown中的新齐鲁风采群英会块

在编辑R Markdown文档时,您需要多次插入新的R齐鲁风采群英会块。以下快捷方式将使您的生活更轻松:

command + option + I on Mac (or command + alt + I depending on your keyboard)
Ctrl + ALT + I on Windows

在R Markdown中的新R齐鲁风采群英会块

重新制作齐鲁风采群英会

清晰可读的齐鲁风采群英会始终更容易且更快地读取(并在共享合作者时看起来更专业)。要自动应用最常见的编码指南,如空白,缩进等,请使用:

cmd + Shift + A on Mac
Ctrl + Shift + A on Windows

例如,以下齐鲁风采群英会不尊重指南(并且不容易阅读):

1+1
  for(i in 1:10){if(!i%%2){next}
print(i)
 }

变得更加整洁,可读:

1 + 1
for (i in 1:10) {
  if (!i %% 2) {
    next
  }
  print(i)
}

Rstudio附属物

Rstudio附件是扩展,其提供了一种简单的机制,用于从RStudio内执行高级R功能。更简单的单词,在执行addin时(通过在附件菜单中的单击按钮)时,执行相应的齐鲁风采群英会,无需您编写齐鲁风采群英会。 Rstudio AddIn具有优点:它们允许您更轻松地执行复杂和高级齐鲁风采群英会,而不是您自己写它。

我最常使用的加入含量可能是 {esquisse} addin,这允许用绘制图 {ggplot2} package 以用户友好和互动的方式,而无需自己编写齐鲁风采群英会。

Rstudio AddIn是相当多样的,需要更详细的解释,因此我写了一篇专注于这些附属物的文章。看文章 这里.

{pander}{report} for aesthetics

The pander() function from the {pander} 包裹 is very useful for r markdown. 文件和报告。它实际上不是一种快捷方式,但它大大提高了R输出的美学。

例如,请参阅以下默认输出之间的差异 Chi-Square独立性测试 和 the output from the same test with the pander() function (using the diamonds dataset from the {ggplot2} package):

library(ggplot2)
dat <- diamonds

test <- chisq.test(table(dat$cut, dat$color))
test
## 
##  Pearson's Chi-squared test
## 
## data:  table(dat$cut, dat$color)
## X-squared = 310.32, df = 24, p-value < 2.2e-16
library(pander)
pander(test)
Pearson的Chi-Squared测试: 桌子(dat$cut, dat$color)
测试统计信息 DF. P值
310.3 24 1.395E-51 * * *

All information that you need are displayed in an elegant table. The pander() function works on many statistical tests (not to say all of them, but I have not tried it on 全部 R)中的可用测试和回归模型:

# Linear model with lm()
model <- lm(price ~ carat + x + y + z,
            data = dat)
model
## 
## Call:
## lm(formula = price ~ carat + x + y + z, data = dat)
## 
## Coefficients:
## (Intercept)        carat            x            y            z  
##      1921.2      10233.9       -884.2        166.0       -576.2
pander(model)
拟合线性型号:价格〜克拉+ x + y + z
  估计 STD。错误 t价值 PR(>|t|)
(截距) 1921 104.4 18.41 1.977E-75.
克拉 10234 62.94 162.6 0
x -884.2 40.47 -21.85 2.317E-105.
y 166 25.86 6.421 1.365E-10.
z -576.2 39.28 -14.67 1.277E-48.

Pander功能还使数据集,表,矢量等更易读。例如,请参阅以下差异:

head(dat) # first 6 observations of a dataset
## # A tibble: 6 x 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
pander(head(dat))
克拉 颜色 明晰 深度 桌子 价格 x y z
0.23 理想的 E SI2 61.5 55 326 3.95 3.98 2.43
0.21 优质的 E SI1 59.8 61 326 3.89 3.84 2.31
0.23 好的 E VS1 56.9 65 327 4.05 4.07 2.31
0.29 优质的 I VS2 62.4 58 334 4.2 4.23 2.63
0.31 好的 J SI2 63.3 58 335 4.34 4.35 2.75
0.24 非常好 J VVS2 62.8 57 336 3.94 3.96 2.48
summary(dat) # main descriptive statistics
##      carat               cut        color        clarity          depth      
##  Min.   :0.2000   Fair     : 1610   D: 6775   SI1    :13065   Min.   :43.00  
##  1st Qu.:0.4000   Good     : 4906   E: 9797   VS2    :12258   1st Qu.:61.00  
##  Median :0.7000   Very Good:12082   F: 9542   SI2    : 9194   Median :61.80  
##  Mean   :0.7979   Premium  :13791   G:11292   VS1    : 8171   Mean   :61.75  
##  3rd Qu.:1.0400   Ideal    :21551   H: 8304   VVS2   : 5066   3rd Qu.:62.50  
##  Max.   :5.0100                     I: 5422   VVS1   : 3655   Max.   :79.00  
##                                     J: 2808   (Other): 2531                  
##      table           price             x                y         
##  Min.   :43.00   Min.   :  326   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:56.00   1st Qu.:  950   1st Qu.: 4.710   1st Qu.: 4.720  
##  Median :57.00   Median : 2401   Median : 5.700   Median : 5.710  
##  Mean   :57.46   Mean   : 3933   Mean   : 5.731   Mean   : 5.735  
##  3rd Qu.:59.00   3rd Qu.: 5324   3rd Qu.: 6.540   3rd Qu.: 6.540  
##  Max.   :95.00   Max.   :18823   Max.   :10.740   Max.   :58.900  
##                                                                   
##        z         
##  Min.   : 0.000  
##  1st Qu.: 2.910  
##  Median : 3.530  
##  Mean   : 3.539  
##  3rd Qu.: 4.040  
##  Max.   :31.800  
## 
pander(summary(dat))
表继续下面
克拉 颜色 明晰 深度
分钟。 :0.2000 公平:1610 D:6775 SI1:13065 分钟。 :43.00
第一个曲折:0.4000 好:4906 e:9797 VS2:12258 第1章:61.00.
中位数:0.7000. 非常好:12082 F:9542 SI2:9194 中位数:61.80.
意思是:0.7979 保费:13791 G:11292 VS1:8171 意思是:61.75
第三曲。:1.0400 理想:21551 H:8304. VVS2:5066 第三曲程:62.50
最大限度。 :5.0100 NA. 我:5422 VVS1:3655. 最大限度。 :79.00
NA. NA. J:2808 (其他):2531 NA.
桌子 价格 x y z
分钟。 :43.00 分钟。 :326. 分钟。 :0.000 分钟。 :0.000 分钟。 :0.000
第一码。:56.00 第一章:950 第一章:4.710 第一章:4.720 第一章:2.910
中位数:57.00 中位数:2401 中位数:5.700 中位数:5.710 中位数:3.530.
意思是:57.46 意思是:3933 意思是:5.731 意思是:5.735 意思是:3.539
第三曲。:59.00 第三章:5324 第三曲。:6.540 第三曲。:6.540 3rd qu .: 4.040
最大限度。 :95.00 最大限度。 :18823 最大限度。 :10.740 最大限度。 :58.900 最大限度。 :31.800
NA. NA. NA. NA. NA.
桌子(dat$cut, dat$color) # contingency table
##            
##                D    E    F    G    H    I    J
##   Fair       163  224  312  314  303  175  119
##   Good       662  933  909  871  702  522  307
##   Very Good 1513 2400 2164 2299 1824 1204  678
##   Premium   1603 2337 2331 2924 2360 1428  808
##   Ideal     2834 3903 3826 4884 3115 2093  896
pander(table(dat$cut, dat$color))
  D E F G H I J
公平的 163 224 312 314 303 175 119
好的 662 933 909 871 702 522 307
非常好 1513 2400 2164 2299 1824 1204 678
优质的 1603 2337 2331 2924 2360 1428 808
理想的 2834 3903 3826 4884 3115 2093 896
names(dat) # variable names
##  [1] "carat"   "cut"     "color"   "clarity" "depth"   "table"   "price"  
##  [8] "x"       "y"       "z"
pander(names(dat))

克拉, , 颜色, 明晰, 深度, 桌子, 价格, x, yz

rnorm(4) # generates 4 observations from a standard normal distribution
## [1] -0.336006627  0.007981993  0.192289317 -0.854022799
pander(rnorm(4))

0.904, 0.3382, 0.538-1.322

在写入时,这个技巧特别有用 r markdown.,因为生成的文档看起来很好。

Another trick for the aesthetics is the report() function from the {report} package.

Similar to pander(), the report() function allows to report test results in a more readable way—but it also interprets results for you. See for example with a 相关试验:

# install.packages("remotes")
# remotes::install_github("easystats/report") # You only need to do that once
library("report") # Load the package every time you start R

report(cor.test(dat$price, dat$carat))
## Effect sizes were labelled following Funder's (2019) recommendations.
## 
## The Pearson's product-moment correlation between dat$price and dat$carat is positive, significant and very large (r = 0.92, 95% CI [0.92, 0.92], t(53938) = 551.41, p < .001)

与您一起显示和解释测试结果 p - value和相关系数。

Note that the report() function can be used for other analyses. See more examples in the package’s 文件.

提取方程模型 {equatiomatic}

如果您经常需要在R MARKDOWN报告中编写与统计模型相对应的等式 {equatiomatic} 将帮助您节省时间。

Here is a basic example with a multiple linear regression using the same dataset as above (i.e., diamonds from {ggplot2}):

# install.packages("equatiomatic")
library(equatiomatic)

# fit a basic multiple linear regression model
model <- lm(price ~ carat + depth,
            data = dat)

extract_eq(model,
           use_coefs = TRUE)

\ [ \ operatorname {Price}= 4045.33 + 7765.14(\operatorname{carat}) - 102.17(\operatorname{depth}) + \epsilon \]

If the equation is long, you can display it on multiple lines by adding the argument wrap = TRUE:

model <- lm(price ~ carat + x + y + z + depth,
            data = dat)

extract_eq(model,
           use_coefs = TRUE,
           wrap = TRUE)

\ [ \begin{aligned} \ operatorname {Price}&= 12196.69 + 10615.5(\ operatorname {carat}) - 1369.67(\ OperatorName {x})+ 97.6(\ OperatorName {Y})\ + \\ &\ Quad 64.2(\ OperatorName {z}) - 156.62(\ OperatorName {Depth})+ \ epsilon \end{aligned} \]

注意:

  • If you use it in R Markdown, you need to add results = 'asis' for that specific code chunk, otherwise the equation will be rendered as a LaTeX equation
  • 在撰写本文时,它仅适用于PDF和HTML输出而不是Word
  • The default number of terms per line is 4. You can change that with the terms_per_line argument:
extract_eq(model,
           use_coefs = TRUE,
           wrap = TRUE,
           terms_per_line = 2)

\ [ \begin{aligned} \ operatorname {Price}&= 12196.69 + 10615.5(\ operatorname {carat})\ - \\ &\ quad 1369.67(\ OperatorName {x})+ 97.6(\ OperatorName {Y})\ + \\ &\ quad 64.2(\ OperatorName {z}) - 156.62(\ OperatorName {Depth})\ + \\ &\quad \epsilon \end{aligned} \]

  • {equatiomatic} 支持逻辑回归的输出。查看所有支持的模型 小插图
  • If you need the theoretical model without the actual parameter estimates, remove the use_coefs argument:
extract_eq(model,
           wrap = TRUE)

\ [ \begin{aligned} \ operatorname {Price}&= \ alpha + \ beta__ {1}(\ OperatorName {carat})+ \ beta_ {2}(\ OperatorName {x})+ \ beta_ {3}(\ OperatorName {Y})\ + \\ &\ quad \ beta_ {4}(\ operatorname {z})+ \ beta_ {5}(\ OperatorName {Depth})+ \ epsilon \end{aligned} \]

在这种情况下,我更喜欢使用 \(\ beta_0 \) 作为拦截而不是 \(\α\). You can change that with the intercept = "beta" argument:

extract_eq(model,
           wrap = TRUE,
           intercept = "beta")

\ [ \begin{aligned} \ operatorname {Price}&= \ beta_ {0} + \ beta_ {1}(\ OperatorName {carat})+ \ beta_ {2}(\ OperatorName {x})+ \ beta_ {3}(\ OperatorName {Y})\ + \\ &\ quad \ beta_ {4}(\ operatorname {z})+ \ beta_ {5}(\ OperatorName {Depth})+ \ epsilon \end{aligned} \]

管道操作员 %>%

If you are using the {dplyr}, {tidyverse} or {magrittr} packages often, here is a shortcut for the pipe operator %>%:

command + Shift + M on Mac
Ctrl + Shift + M on Windows

其他

类似于许多其他程序,您也可以使用:

  • command + Shift + N on Mac and Ctrl + Shift + N on Windows to open a new R Script
  • command + S on Mac and Ctrl + S on Windows to save your current script or R Markdown document

谢谢阅读。我希望你能找到这些提示和技巧很有用。如果您使用其他人,请随时在评论部分分享。看到这一点 在r markdown启动指南 如果你不熟悉它。

一如既往,如果您有问题或与本文所涵盖的主题相关的建议,请将其添加为评论,以便其他读者可以从讨论中受益。



喜欢这篇文章?

获取更新 每次发布新文章。
任何垃圾邮件都没有任何垃圾邮件。
分享: