Mor*_*arz 7 r r-markdown dplyr magrittr
我正在尝试实现两件可能不兼容的事情:当我创建 PDF 时,我希望将 RMarkdown 块中的代码包裹在每一行中(换句话说,下面的行在页面上运行)边缘)。
在阅读了一些内容之后(包括这里并简要尝试了该styler包,我发现使用tidy=TRUE和tidy.opts = list(width.cutoff=60)工作(见下文)
knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
Run Code Online (Sandbox Code Playgroud)
注意:您可能需要formatR安装。
但遗憾的是,这破坏了代码的格式,管道%>%保留了管道的格式并让代码在页面外运行。
有没有办法正确地做到这一点?这样文本就可以保留在页面上,结构也可以保持一定的位置吗?
感谢您的帮助!
返工:
两者的标题:
---
title: "R Notebook"
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)
选择第二个图像的块
knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
Run Code Online (Sandbox Code Playgroud)
两者的示例代码:
data(mtcars)
library(tidyverse)
variable_1 <- 10
variable_2 <- 50
variable_3 <- 30
variable_4 <- 5
variable_5 <- 100
variable_6 <- 25
variable_7 <- 600
mtcars %>%
mutate(mpg = ifelse(mpg>18,
yes = (variable_1*variable_2)*variable_3 + variable_4 + variable_5 + variable_6 + variable_7,
no = mpg)) %>%
select(mpg,disp) %>%
group_by(mpg) %>%
summarise(mean(mpg)) %>%
ungroup -> df
Run Code Online (Sandbox Code Playgroud)
我还添加了SessionInfo()软件包版本等。
R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] forcats_0.5.0 stringr_1.4.0 dplyr_1.0.0 purrr_0.3.4 readr_1.3.1 tidyr_1.0.2 tibble_3.0.0
[8] ggplot2_3.3.0 tidyverse_1.3.0
loaded via a namespace (and not attached):
[1] tidyselect_1.1.0 xfun_0.15 haven_2.2.0 lattice_0.20-41 colorspace_1.4-1 vctrs_0.3.0
[7] generics_0.0.2 htmltools_0.4.0 yaml_2.2.1 rlang_0.4.6 pillar_1.4.3 glue_1.4.1
[13] withr_2.2.0 DBI_1.1.0 dbplyr_1.4.3 modelr_0.1.6 readxl_1.3.1 lifecycle_0.2.0
[19] munsell_0.5.0 gtable_0.3.0 cellranger_1.1.0 rvest_0.3.5 evaluate_0.14 knitr_1.28
[25] fansi_0.4.1 broom_0.5.6 Rcpp_1.0.4.6 backports_1.1.6 scales_1.1.0 jsonlite_1.6.1
[31] fs_1.4.1 hms_0.5.3 packrat_0.5.0 digest_0.6.25 stringi_1.4.6 grid_4.0.0
[37] cli_2.0.2 tools_4.0.0 magrittr_1.5 crayon_1.3.4 pkgconfig_2.0.3 ellipsis_0.3.0
[43] xml2_1.3.1 reprex_0.3.0 lubridate_1.7.8 assertthat_0.2.1 rmarkdown_2.3 httr_1.4.1
[49] rstudioapi_0.11 R6_2.4.1 nlme_3.1-147 compiler_4.0.0
Run Code Online (Sandbox Code Playgroud)
虽然我不确定下图是否反映了您想要的内容,但您可以按如下方式换行:
您可以通过 LaTeX 的fvextra包控制 PDF 文件中代码的外观。您可以通过以下方式调用它并配置它的设置header-includes:
header-includes:
- |
```{=latex}
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{
showspaces = false,
showtabs = false,
breaklines,
commandchars=\\\{\}
}
```
Run Code Online (Sandbox Code Playgroud)
breaksymbolleft={}如果要删除换行中的箭头符号,请添加(另请参阅手册breaksymbolleft中的描述):
header-includes:
- |
```{=latex}
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{
breaksymbolleft={},
showspaces = false,
showtabs = false,
breaklines,
commandchars=\\\{\}
}
```
Run Code Online (Sandbox Code Playgroud)
这一切都可以与具有两种功能的选项相结合tidy = "stlyer"(断线和使用整洁的样式)。
---
title: "R Notebook"
output: pdf_document
header-includes:
- |
```{=latex}
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{
breaksymbolleft={},
showspaces = false,
showtabs = false,
breaklines,
commandchars=\\\{\}
}
```
---
```{r}
knitr::opts_chunk$set(tidy="styler")
```
```{r}
data(mtcars)
library(tidyverse)
variable_1 <- 10
variable_2 <- 50
variable_3 <- 30
variable_4 <- 5
variable_5 <- 100
variable_6 <- 25
variable_7 <- 600
mtcars %>%
mutate(mpg = ifelse(mpg>18,
yes = (variable_1*variable_2)*variable_3 + variable_4 + variable_5 + variable_6 + variable_7,
no = mpg)) %>%
select(mpg,disp) %>%
group_by(mpg) %>%
summarise(mean(mpg)) %>%
ungroup -> df
```
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |