在r markdown中将调用转换为方程式

时间:2019-06-12 18:59:30

标签: r expression r-markdown call

我已经编写了ggstatsplot软件包以进行一些统计分析。包函数(在development version中)可以返回plotcall,其中包含在图的副标题中显示的统计详细信息。

以下是一个plot作为回报的示例:

# setup
set.seed(123)

# plot
(p <- ggstatsplot::ggbetweenstats(
  data = mtcars,
  x = am, 
  y = wt,
  return = "plot",
  messages = FALSE
))

# checking class
class(p)
#> [1] "gg"     "ggplot"

以下是一个call作为回报的示例:

# call
(p_call <- ggstatsplot::ggbetweenstats(
  data = mtcars,
  x = am, 
  y = wt,
  return = "subtitle",
  messages = FALSE
))
#> paste(NULL, italic("t"), "(", "29.23", ") = ", "5.49", ", ", 
#>     italic("p"), " = ", "< 0.001", ", ", italic("g"), " = ", 
#>     "1.89", ", CI"["95%"], " [", "1.10", ", ", "2.83", "]", ", ", 
#>     italic("n"), " = ", 32L)

# checking class
class(p_call)
#> [1] "call"

基于user request,我的问题是是否可以通过任何方式在R Markdown文档中打印该调用或将该调用转换为乳胶方程式?

我对使用R Markdown不太熟悉,我尝试了以下操作,但会产生错误:

enter image description here

为了重现性,这是我的会话信息:

options(width = 300)
library(ggstatsplot)
sessioninfo::session_info()
#> - Session info -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#>  setting  value                                    
#>  version  R version 3.6.0 alpha (2019-03-29 r76300)
#>  os       Windows 10 x64                           
#>  system   x86_64, mingw32                          
#>  ui       RTerm                                    
#>  language (EN)                                     
#>  collate  English_United States.1252               
#>  ctype    English_United States.1252               
#>  tz       America/New_York                         
#>  date     2019-06-12                               
#> 
#> - Packages -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#>  package       * version     date       lib source                                  
#>  abind           1.4-5       2016-07-21 [1] CRAN (R 3.5.0)                          
#>  assertthat      0.2.1       2019-03-21 [1] CRAN (R 3.6.0)                          
#>  backports       1.1.4       2019-04-10 [1] CRAN (R 3.6.0)                          
#>  BayesFactor     0.9.12-4.2  2018-05-19 [1] CRAN (R 3.5.1)                          
#>  bayestestR      0.2.0       2019-05-29 [1] CRAN (R 3.6.0)                          
#>  boot            1.3-21      2019-03-01 [2] CRAN (R 3.6.0)                          
#>  broom           0.5.2.9001  2019-05-29 [1] local                                   
#>  broom.mixed     0.2.4.9000  2019-03-14 [1] Github (bbolker/broom.mixed@c2de407)    
#>  broomExtra      0.0.3.9000  2019-05-20 [1] local                                   
#>  car             3.0-3       2019-05-27 [1] CRAN (R 3.6.0)                          
#>  carData         3.0-2       2018-09-30 [1] CRAN (R 3.5.1)                          
#>  cellranger      1.1.0       2016-07-27 [1] CRAN (R 3.5.1)                          
#>  cli             1.1.0       2019-03-19 [1] CRAN (R 3.6.0)                          
#>  cluster         2.0.7-1     2018-04-13 [2] CRAN (R 3.6.0)                          
#>  coda            0.19-2      2018-10-08 [1] CRAN (R 3.5.1)                          
#>  codetools       0.2-16      2018-12-24 [1] CRAN (R 3.5.2)                          
#>  coin            1.3-0       2019-03-08 [1] CRAN (R 3.5.2)                          
#>  colorspace      1.4-1       2019-03-18 [1] CRAN (R 3.6.0)                          
#>  cowplot         0.9.99      2019-06-09 [1] Github (wilkelab/cowplot@7520d81)       
#>  crayon          1.3.4       2017-09-16 [1] CRAN (R 3.5.1)                          
#>  curl            3.3         2019-01-10 [1] CRAN (R 3.6.0)                          
#>  data.table      1.12.2      2019-04-07 [1] CRAN (R 3.5.3)                          
#>  DEoptimR        1.0-8       2016-11-19 [1] CRAN (R 3.5.0)                          
#>  DescTools       0.99.28     2019-03-17 [1] CRAN (R 3.6.0)                          
#>  digest          0.6.19      2019-05-20 [1] CRAN (R 3.6.0)                          
#>  dplyr           0.8.1       2019-05-14 [1] CRAN (R 3.6.0)                          
#>  ellipsis        0.1.0       2019-02-19 [1] CRAN (R 3.6.0)                          
#>  emmeans         1.3.5       2019-06-10 [1] CRAN (R 3.6.0)                          
#>  EMT             1.1         2013-01-29 [1] CRAN (R 3.5.2)                          
#>  estimability    1.3         2018-02-11 [1] CRAN (R 3.5.0)                          
#>  evaluate        0.14        2019-05-28 [1] CRAN (R 3.6.0)                          
#>  expm            0.999-4     2019-03-21 [1] CRAN (R 3.6.0)                          
#>  ez              4.4-0       2016-11-02 [1] CRAN (R 3.5.3)                          
#>  fit.models      0.5-14      2017-04-06 [1] CRAN (R 3.5.1)                          
#>  forcats         0.4.0       2019-02-17 [1] CRAN (R 3.5.2)                          
#>  foreign         0.8-71      2018-07-20 [2] CRAN (R 3.6.0)                          
#>  generics        0.0.2       2019-03-05 [1] Github (r-lib/generics@c15ac43)         
#>  ggcorrplot      0.1.3       2019-05-19 [1] CRAN (R 3.6.0)                          
#>  ggExtra         0.8         2019-02-23 [1] Github (daattali/ggExtra@dd74c0f)       
#>  ggplot2         3.2.0.9000  2019-06-05 [1] Github (tidyverse/ggplot2@b560662)      
#>  ggrepel         0.8.1       2019-05-07 [1] CRAN (R 3.6.0)                          
#>  ggsignif        0.5.0       2019-02-20 [1] CRAN (R 3.6.0)                          
#>  ggstatsplot   * 0.0.10.9000 2019-06-12 [1] local                                   
#>  glue            1.3.1       2019-03-12 [1] CRAN (R 3.6.0)                          
#>  groupedstats    0.0.7.9000  2019-06-05 [1] local                                   
#>  gtable          0.3.0       2019-03-25 [1] CRAN (R 3.6.0)                          
#>  gtools          3.8.1       2018-06-26 [1] CRAN (R 3.5.0)                          
#>  haven           2.1.0       2019-02-19 [1] CRAN (R 3.6.0)                          
#>  highr           0.8         2019-03-20 [1] CRAN (R 3.6.0)                          
#>  hms             0.4.2       2018-03-10 [1] CRAN (R 3.5.1)                          
#>  htmltools       0.3.6       2017-04-28 [1] CRAN (R 3.5.1)                          
#>  httpuv          1.5.1       2019-04-05 [1] CRAN (R 3.6.0)                          
#>  insight         0.3.0       2019-05-11 [1] CRAN (R 3.6.0)                          
#>  jmv             0.9.6.1     2019-04-22 [1] CRAN (R 3.6.0)                          
#>  jmvcore         1.0.0       2019-05-28 [1] CRAN (R 3.6.0)                          
#>  knitr           1.23        2019-05-18 [1] CRAN (R 3.6.0)                          
#>  LaplacesDemon   16.1.1      2018-06-30 [1] CRAN (R 3.5.1)                          
#>  later           0.8.0       2019-02-11 [1] CRAN (R 3.6.0)                          
#>  lattice         0.20-38     2018-11-04 [2] CRAN (R 3.6.0)                          
#>  lazyeval        0.2.2       2019-03-15 [1] CRAN (R 3.6.0)                          
#>  libcoin         1.0-4       2019-02-28 [1] CRAN (R 3.5.2)                          
#>  lme4            1.1-21      2019-03-05 [1] CRAN (R 3.6.0)                          
#>  lmtest          0.9-37      2019-04-30 [1] CRAN (R 3.6.0)                          
#>  logspline       2.1.12      2019-02-05 [1] CRAN (R 3.5.2)                          
#>  magrittr        1.5         2014-11-22 [1] CRAN (R 3.5.1)                          
#>  manipulate      1.0.1       2014-12-24 [1] CRAN (R 3.5.0)                          
#>  MASS            7.3-51.4    2019-03-31 [1] CRAN (R 3.6.0)                          
#>  Matrix          1.2-17      2019-03-22 [1] CRAN (R 3.6.0)                          
#>  MatrixModels    0.4-1       2015-08-22 [1] CRAN (R 3.5.1)                          
#>  matrixStats     0.54.0      2018-07-23 [1] CRAN (R 3.5.1)                          
#>  mc2d            0.1-18      2017-03-06 [1] CRAN (R 3.5.1)                          
#>  metaBMA         0.3.9       2017-08-04 [1] CRAN (R 3.5.3)                          
#>  metafor         2.1-0       2019-05-14 [1] CRAN (R 3.6.0)                          
#>  mgcv            1.8-28      2019-03-21 [1] CRAN (R 3.6.0)                          
#>  mime            0.7         2019-06-11 [1] CRAN (R 3.6.0)                          
#>  miniUI          0.1.1.1     2018-05-18 [1] CRAN (R 3.5.1)                          
#>  minqa           1.2.4       2014-10-09 [1] CRAN (R 3.5.1)                          
#>  mnormt          1.5-5       2016-10-15 [1] CRAN (R 3.5.0)                          
#>  modelr          0.1.4       2019-02-18 [1] CRAN (R 3.6.0)                          
#>  modeltools      0.2-22      2018-07-16 [1] CRAN (R 3.5.1)                          
#>  multcomp        1.4-10      2019-03-05 [1] CRAN (R 3.5.2)                          
#>  multcompView    0.1-7       2015-07-31 [1] CRAN (R 3.5.1)                          
#>  munsell         0.5.0       2018-06-12 [1] CRAN (R 3.5.1)                          
#>  mvtnorm         1.0-10      2019-03-05 [1] CRAN (R 3.5.2)                          
#>  nlme            3.1-137     2018-04-07 [2] CRAN (R 3.6.0)                          
#>  nloptr          1.2.1       2018-10-03 [1] CRAN (R 3.5.1)                          
#>  nortest         1.0-4       2015-07-30 [1] CRAN (R 3.5.2)                          
#>  openxlsx        4.1.0.1     2019-05-28 [1] CRAN (R 3.6.0)                          
#>  paletteer       0.2.1.9000  2019-03-25 [1] Github (EmilHvitfeldt/paletteer@38cdb34)
#>  pbapply         1.4-0       2019-02-05 [1] CRAN (R 3.6.0)                          
#>  pcaPP           1.9-73      2018-01-14 [1] CRAN (R 3.5.0)                          
#>  performance     0.2.0       2019-06-04 [1] CRAN (R 3.6.0)                          
#>  pillar          1.4.1       2019-05-28 [1] CRAN (R 3.6.0)                          
#>  pkgconfig       2.0.2       2018-08-16 [1] CRAN (R 3.5.1)                          
#>  plyr            1.8.4       2016-06-08 [1] CRAN (R 3.5.1)                          
#>  promises        1.0.1       2018-04-13 [1] CRAN (R 3.5.1)                          
#>  psych           1.8.12      2019-01-12 [1] CRAN (R 3.6.0)                          
#>  purrr           0.3.2       2019-03-15 [1] CRAN (R 3.6.0)                          
#>  purrrlyr        0.0.5       2019-03-15 [1] CRAN (R 3.6.0)                          
#>  R6              2.4.0       2019-02-14 [1] CRAN (R 3.6.0)                          
#>  rcompanion      2.2.1       2019-05-29 [1] CRAN (R 3.6.0)                          
#>  Rcpp            1.0.1       2019-03-17 [1] CRAN (R 3.6.0)                          
#>  readxl          1.3.1       2019-03-13 [1] CRAN (R 3.6.0)                          
#>  reshape         0.8.8       2018-10-23 [1] CRAN (R 3.6.0)                          
#>  reshape2        1.4.3       2017-12-11 [1] CRAN (R 3.5.1)                          
#>  rio             0.5.16      2018-11-26 [1] CRAN (R 3.6.0)                          
#>  rjson           0.2.20      2018-06-08 [1] CRAN (R 3.5.0)                          
#>  rlang           0.3.4       2019-04-07 [1] CRAN (R 3.6.0)                          
#>  rmarkdown       1.13        2019-05-22 [1] CRAN (R 3.6.0)                          
#>  robust          0.4-18      2017-04-27 [1] CRAN (R 3.5.1)                          
#>  robustbase      0.93-5      2019-05-12 [1] CRAN (R 3.6.0)                          
#>  rrcov           1.4-7       2018-11-15 [1] CRAN (R 3.6.0)                          
#>  rstudioapi      0.10        2019-03-19 [1] CRAN (R 3.6.0)                          
#>  runjags         2.0.4-2     2016-07-25 [1] CRAN (R 3.5.2)                          
#>  sandwich        2.5-1       2019-04-06 [1] CRAN (R 3.6.0)                          
#>  scales          1.0.0       2018-08-09 [1] CRAN (R 3.5.1)                          
#>  sessioninfo     1.1.1       2018-11-05 [1] CRAN (R 3.6.0)                          
#>  shiny           1.3.2       2019-04-22 [1] CRAN (R 3.6.0)                          
#>  sjlabelled      1.1.0       2019-06-06 [1] CRAN (R 3.6.0)                          
#>  sjmisc          2.8.0       2019-06-11 [1] CRAN (R 3.6.0)                          
#>  sjstats         0.17.5      2019-06-04 [1] CRAN (R 3.6.0)                          
#>  skimr           1.0.6       2019-05-27 [1] CRAN (R 3.6.0)                          
#>  stringi         1.4.3       2019-03-12 [1] CRAN (R 3.6.0)                          
#>  stringr         1.4.0       2019-02-10 [1] CRAN (R 3.6.0)                          
#>  survival        2.43-3      2018-11-26 [2] CRAN (R 3.6.0)                          
#>  TH.data         1.0-10      2019-01-21 [1] CRAN (R 3.5.2)                          
#>  tibble          2.1.3       2019-06-06 [1] CRAN (R 3.6.0)                          
#>  tidyr           0.8.3       2019-03-01 [1] CRAN (R 3.6.0)                          
#>  tidyselect      0.2.5       2018-10-11 [1] CRAN (R 3.5.1)                          
#>  TMB             1.7.15      2018-11-09 [1] CRAN (R 3.6.0)                          
#>  withr           2.1.2       2018-03-15 [1] CRAN (R 3.5.1)                          
#>  WRS2            1.0-0       2019-06-05 [1] R-Forge (R 3.6.0)                       
#>  xfun            0.7         2019-05-14 [1] CRAN (R 3.6.0)                          
#>  xtable          1.8-4       2019-04-21 [1] CRAN (R 3.5.3)                          
#>  yaml            2.2.0       2018-07-25 [1] CRAN (R 3.5.1)                          
#>  zip             2.0.2       2019-05-13 [1] CRAN (R 3.6.0)                          
#>  zoo             1.8-6       2019-05-28 [1] CRAN (R 3.6.0)                          
#> 
#> [1] C:/Users/inp099/Documents/R/win-library/3.6
#> [2] C:/Program Files/R/R-3.6.0alpha/library

reprex package(v0.3.0)于2019-06-12创建

1 个答案:

答案 0 :(得分:2)

将示例转换为Markdown代码非常容易。这与一般情况相去甚远,但是很明显如何扩展它以处理其他表达式。

这个想法是对plotmath表达式求值以形成一个Markdown字符串。例如,使用此功能:

toMarkdown <- function(e) {
  # In plotmath, paste acts like paste0
  paste <- paste0

  # Italic text just has stars around it
  italic <- function(s) paste0("*", s, "*")

  # Single subscripts are entered using subsetting
  `[` <- function(main, subscript)  paste0(main, "~", subscript, "~")

  # Evaluate the expression to produce a string
  eval(e)
}

我尚未安装ggstatsplot的开发版本,但我可以复制您的p_call

p_call <- quote(paste(NULL, italic("t"), "(", "29.23", ") = ", "5.49", ", ", 
     italic("p"), " = ", "< 0.001", ", ", italic("g"), " = ", 
     "1.89", ", CI"["95%"], " [", "1.10", ", ", "2.83", "]", ", ", 
     italic("n"), " = ", 32L))

如果我通过toMarkdown运行它,我会得到:

> toMarkdown(p_call)
[1] "*t*(29.23) = 5.49, *p* = < 0.001, *g* = 1.89, CI~95%~ [1.10, 2.83], *n* = 32"

如果我使用r toMarkdown(p_call)(在反引号中)将其内联到Markdown文档中,则会得到以下屏幕截图:

screenshot

当您是ggstatsplot的作者时,您应该知道调用对象中可能出现的每个函数,并且可以扩展toMarkdown来处理所有这些函数。随时将其包含在您的包装中。