Непонятное предупреждение при определении оператора нестандартной трубы - PullRequest
0 голосов
/ 04 февраля 2019

В моем процессе мне нужно выполнить много dplyr::inner_join с.Я подумал, что я мог бы определить собственный оператор канала для него, как объяснено здесь :

library(tidyverse)
library(rlang)

df1 <- tibble(a = 1:10, b = 11:20)
df2 <- tibble(a = 1:10, c = 21:30)

`%J>%` <- function(lhs, rhs){
  inner_join(lhs, rhs)
}

df1 %J>% df2

Это работает, как и ожидалось, и я получаю:

Joining, by = "a"
# A tibble: 10 x 3
       a     b     c
   <int> <int> <int>
 1     1    11    21
 2     2    12    22
 3     3    13    23
 4     4    14    24
 5     5    15    25
 6     6    16    26
 7     7    17    27
 8     8    18    28
 9     9    19    29
10    10    20    30

Но также и предупреждение:

Warning message:
`chr_along()` is soft-deprecated as of rlang 0.2.0.
This warning is displayed once per session.

График сгущается, если я вообще не включаю library(rlang) (в новом сеансе), и в этом случае я не получаю предупреждений:

library(tidyverse)

df1 <- tibble(a = 1:10, b = 11:20)
df2 <- tibble(a = 1:10, c = 21:30)

`%J>%` <- function(lhs, rhs){
  inner_join(lhs, rhs)
}

df1 %J>% df2

Очевидно, мне не нужно вообще включать library(rlang) в этом примере, но если я это сделал - это одно странное предупреждение.Откуда оно исходит и как его избежать, если бы я хотел включить library(rlang)?

sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)

Matrix products: default

locale:
[1] LC_COLLATE=English_Israel.1252  LC_CTYPE=English_Israel.1252    LC_MONETARY=English_Israel.1252 LC_NUMERIC=C                    LC_TIME=English_Israel.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] rlang_0.3.0.1   forcats_0.3.0   stringr_1.3.1   dplyr_0.7.6     purrr_0.2.5     readr_1.1.1     tidyr_0.8.1     tibble_1.4.2    ggplot2_3.1.0   tidyverse_1.2.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.19     cellranger_1.1.0 pillar_1.3.0     compiler_3.5.1   plyr_1.8.4       bindr_0.1.1      tools_3.5.1      packrat_0.4.9-3  jsonlite_1.5     lubridate_1.7.4  nlme_3.1-137    
[12] gtable_0.2.0     lattice_0.20-35  pkgconfig_2.0.2  cli_1.0.1        rstudioapi_0.8   haven_1.1.2      bindrcpp_0.2.2   withr_2.1.2      xml2_1.2.0       httr_1.3.1       hms_0.4.2       
[23] grid_3.5.1       tidyselect_0.2.4 glue_1.3.0       R6_2.2.2         fansi_0.3.0      readxl_1.1.0     modelr_0.1.2     magrittr_1.5     backports_1.1.2  scales_1.0.0     rvest_0.3.2     
[34] assertthat_0.2.0 colorspace_1.3-2 utf8_1.1.4       stringi_1.2.4    lazyeval_0.2.1   munsell_0.5.0    broom_0.5.0      crayon_1.3.4

1 Ответ

0 голосов
/ 04 февраля 2019

Из вашего описания я бы сказал, что если вы загрузите rlang как часть tidyverse (т.е. просто загрузите tidyverse), то R будет использовать стих rlang, который автоматически обновляется в этом стихе.,Если вы сначала загрузите tidyverse, а затем rlang, то R будет использовать последний увиденный, который вы загрузили вручную.Таким образом, если вы не обновили rlang вручную, то это выдаст предупреждение.Проблема должна исчезнуть, если вы вручную обновите rlang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...