小编Ind*_*til的帖子

正确格式化ggplot2中的两行标题

我正在开发一个自定义函数,可以为图表添加两行字幕,我希望无论用户可能选择输入("character""expression"),都可以正确格式化标题.我在下面创建了一个玩具示例,以说明当前实现该功能的两个问题 -

  1. 当标题不是时NULL,两条线不对齐.
  2. 输入表达式后,连接的标题会被完全破坏.

编辑:

如果你有一个不同的解决方案实现相同的东西(如果用户提供的captionNULL,那么默认的单行表达式打印为标题,否则打印为标题的两行表达式),我也愿意那.

尽管对象的类仍然存在是很重要的,"ggplot"因为我想使用ggplot2函数对结果图进行进一步修改.

# needed libraries
library(ggplot2)

# custom function to prepare a caption
caption_maker <- function(caption) {

  # if caption is not null then add line separator
  if (!is.null(caption)) {
    caption <- paste(caption, "; \n", sep = "")
  }

  # prepare the caption with additional info
  caption <- base::substitute(
    expr =
      paste(
        y,
        "In favor of null: ",
        "log"["e"], …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 plotmath

12
推荐指数
1
解决办法
1052
查看次数

在顶级找到的非标准文件/目录:'README.Rmd'即使在实施建议的解决方案后仍然存在

我正在使用一个包并使用R CMD CHECKdevtools::check()生成以下代码NOTE:

> checking top-level files ... NOTE
  Non-standard file/directory found at top level:
    'README.Rmd'
Run Code Online (Sandbox Code Playgroud)

此问题的变体之前已经提出过(当README.md包含图像时,包检查时注意或警告),但其中提供的解决方案对我没有用.

这是我的.Rbuildignore档案.如上所述,我已经包括^README-.*\.png$:

^.*\.Rproj$
^\.Rproj\.user$
^CONDUCT\.md$
^\.travis\.yml$
^README-.*\.png$
^cran-comments\.md$
Run Code Online (Sandbox Code Playgroud)

此外,我的README.Rmd文档有以下块,保存所有数字/man/figures/

{r, echo = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-"
)
Run Code Online (Sandbox Code Playgroud)

如果您需要有关该.Rmd文件的更多详细信息,请访问:https: //github.com/IndrajeetPatil/ggstatsplot/blob/master/README.Rmd

鉴于最好摆脱所有NOTES成功通过CRAN的可能性R CMD CHECK,我该如何避免这种特殊情况NOTE呢?

r devtools knitr r-package

9
推荐指数
1
解决办法
1547
查看次数

如何禁止将“S3 方法覆盖”消息打印到用户控制台

我有一个名为ggstatsplot( https://indrajeetpatil.github.io/ggstatsplot/ )的 R 包,它依赖于一组S3相互共享一些方法的包。因此,每次加载包时,用户都会收到有关此问题的消息,这对大多数用户没有用。

> library(ggstatsplot)
Registered S3 method overwritten by 'broom.mixed':
  method      from 
  tidy.gamlss broom
Registered S3 methods overwritten by 'car':
  method                          from
  influence.merMod                lme4
  cooks.distance.influence.merMod lme4
  dfbeta.influence.merMod         lme4
  dfbetas.influence.merMod        lme4
Run Code Online (Sandbox Code Playgroud)

有什么我可以在包内部实现的东西,以避免这些消息被打印到用户的控制台?也许有什么用.onAttach

r package package-development

9
推荐指数
1
解决办法
1221
查看次数

计算代码覆盖率时,Travis-CI上出现“未能找到包目录”错误

我不再covr在Travis上使用R包得到代码覆盖(例如this build),它给出以下错误:

图片

Travis之前从未遇到过任何问题,从以下提交日志可以看出,它突然停止了工作-

在此处输入图片说明

这是此软件包的GitHub存储库的链接,其中包含所有必要的详细信息(例如和的yaml文件):https : //github.com/IndrajeetPatil/ggstatsplottravis-cicodecov

关于如何摆脱此错误并获得travis为PR和master分支再次提供代码覆盖率的任何想法?

PS:
如果您想知道,此应用程序codecov也有权访问此存储库中的数据:

在此处输入图片说明

testing code-coverage r travis-ci r-package

8
推荐指数
1
解决办法
138
查看次数

由于缺少GSL,GN程序包构建在Unix机器上失败 - GNU Scientific Library

我正面临着R包装开发的一个特别棘手的问题.我自己的程序包ggstatsplot(https://github.com/IndrajeetPatil/ggstatsplot)依赖于userfriendlyscience,这取决于另一个被调用的程序包MBESS,它本身最终依赖于另一个名为的程序包gsl.在Windows机器ggstatsplot上安装没有任何问题(通过持续集成平台评估:https://ci.appveyor.com/project/IndrajeetPatil/ggstatsplot).AppVeyor

但每当包被上安装的Unix机器,它抛出的错误ggstatsplot,不能因为下载userfriendlyscienceMBESS不能下载,因为gsl不能下载.在Travis使用虚拟Unix机器的持续集成平台上也会发现同样的事情,其中包构建失败(https://travis-ci.org/IndrajeetPatil/ggstatsplot).

现在,在Unix机器上为用户解决这个问题的一种方法是配置GSL(如下所述: 在Mac上安装R gsl包),但我不可能指望每个用户ggstatsplot都要经历艰难的配置过程GSL.我希望他们只是跑步install.packages("ggstatsplot")并完成它.

所以我真的很感激,如果有人能提供任何有用的建议,我可以通过从源头上解决这个问题来简化我的包用户生活.我是否应该在软件包本身中包含哪些内容来代表用户处理此问题?

r gsl travis-ci r-package

7
推荐指数
1
解决办法
783
查看次数

purrr :: pmap与rlang的混淆行为; "引用"或不引用Q的论点

我有一个自定义函数,我正在从数据框中读取输入的变量rlang.无论输入的参数是引用还是不引用,此函数都可以正常工作.但是,奇怪的是,当使用此函数时purrr::pmap,它仅在引用参数时起作用.

所以我有两个问题:

  1. 为什么函数行为这样?

  2. 如何使用rlang这样一个函数,即使用于我也不必引用参数purrr::pmap

这是一个使用简单函数突出显示此问题的最小代表:

# loading the needed libraries
library(rlang)
library(dplyr)
library(purrr)


# defining the function
tryfn <- function(data, x, y) {
  data <-
    dplyr::select(
      .data = data,
      x = !!rlang::enquo(x),
      y = !!rlang::enquo(y)
    )

  # creating a dataframe of means
  result_df <- data.frame(mean.x = mean(data$x), mean.y = mean(data$y))

  # return the dataframe
  return(result_df)
}

# without quotes (works!)
tryfn(iris, Sepal.Length, Sepal.Width)
#>     mean.x   mean.y
#> 1 5.843333 3.057333 …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr tidyeval rlang

6
推荐指数
1
解决办法
127
查看次数

使用“rlang”NSE 按多个变量进行分组

我正在尝试编写一个自定义函数,该函数使用 的rlang非标准评估来按多个变量对数据帧进行分组。

这就是我已经-

library(rlang)

# function definition
tryfn <- function(data, groups, ...) {

  # preparing data
  df <- dplyr::group_by(data, !!!rlang::enquos(groups))
  print(head(df))

  # applying some function `.f`  on df that absorbs `...`
  # .f(df, ...)
}
Run Code Online (Sandbox Code Playgroud)

这适用于单个分组变量 -

# works
tryfn(mtcars, am)

#> # A tibble: 6 x 11
#> # Groups:   am [2]
#>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> …
Run Code Online (Sandbox Code Playgroud)

r tidyverse tidyeval rlang

6
推荐指数
1
解决办法
445
查看次数

使用`svglite`图形设备时如何成功使用{pkgdown}

为了解决我的 R 包中的问题,我希望尝试使用svglite图形设备来渲染ggplot绘图:

knitr::opts_chunk$set(dev = "svglite")
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,{pkgdown} 工作流程将失败(失败日志)并显示警告消息:

1: 'mode(bg)' differs between new and previous
     ==> NOT changing 'bg' 
2: 'mode(bg)' differs between new and previous
     ==> NOT changing 'bg' 
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,这些警告消息来自par(),它抱怨无法更改背景颜色 ( bg)。但我没有明确调用par(),也没有更改相关图的背景颜色。

所以我想知道为什么我会收到此错误以及如何解决它?

r ggplot2 r-markdown pkgdown svglite

6
推荐指数
1
解决办法
151
查看次数

从默认更改 ggplot2::facet_wrap 标题

是否有任何可能的方法来更改 facet_wrap 变量的标签,如下所示。因此,例如,我希望它不是cyl: 4, cyl: 6, cyl: 8,而是读取condition: 4, condition: 6, condition: 8。当然,我可以通过重命名变量来做到这一点,但这不是我想要的。这是自定义函数的一个简单得多的版本,我不能随意重命名变量。

另一种说法是,我有任何自由标记facet_wrap我喜欢的任何东西吗?有点像在数据框 ( )中的x审美变量如何ggplot2可以有一些名称 (例如),但我仍然可以使用)将其替换为我自己的名称)。我想要类似的东西。 cylmtcarslabs(x = "cylinder")facet_wrap

library(dplyr)
library(datasets)
library(ggplot2)
data(mtcars)

# creating a dataframe
df <- dplyr::group_by(mtcars, .dots = c('cyl', 'am')) %>%
  dplyr::summarize(counts = n()) %>%
  dplyr::mutate(perc = (counts / sum(counts)) * 100) %>%
  dplyr::arrange(desc(perc))

# preparing the plot
ggplot2::ggplot(df, aes('', counts)) +
  geom_col(
    position = 'fill',
    color = …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2

5
推荐指数
1
解决办法
1万
查看次数

在r中使用atop函数时获得恒定的文本大小

下面是我编写的复杂自定义函数的一个简单得多的示例。在这个函数的全长形式中,

  • "layer1"对应于caption用户输入,
  • "layer2" 对应于统计测试的结果,并且
  • "layer3" 对应于有关执行的统计测试的详细信息。

但是当所有三层都包含在标题中时,它看起来像这样 -

library(ggplot2)

ggplot(iris, aes(Species, Sepal.Length)) +
  geom_boxplot()  +
  labs(caption = substitute(atop(substitute(
    atop("layer1", "layer2")
  )
  , "layer3")))
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.2.1)于 2018 年 11 月 9 日创建

所以我想找出一种方法可以使所有三层文本大小保持不变。我实际上不确定为什么在这种情况下文本大小会自动更改。

有什么办法可以防止这种情况发生吗?

r ggplot2 plotmath tidyverse

5
推荐指数
1
解决办法
301
查看次数