Как мне использовать функцию uq() внутри пакета?
Я озадачен поведением uq()
функция. Поведение не то же самое, когда я использую uq()
или же lazyeval::uq()
,
Вот мой воспроизводимый пример:
Во-первых, я генерирую поддельный набор данных
library(tibble)
library(lazyeval)
fruits <- c("apple", "banana", "peanut")
price <- c(5,6,4)
table_fruits <- tibble(fruits, price)
Затем я пишу игрушечную функцию, toy_function_v1
, используя только uq()
:
toy_function_v1 <- function(data, var) {
lazyeval::f_eval(f = ~ uq(var), data = data)
}
и вторая функция, использующая lazyeval::uq()
:
toy_function_v2 <- function(data, var) {
lazyeval::f_eval(f = ~ lazyeval::uq(var), data = data)
}
Удивительно, но выходные данные v1 и v2 не совпадают:
> toy_function_v1(data = table_fruits, var = ~ price)
[1] 5 6 4
> toy_function_v2(data = table_fruits, var = ~ price)
price
Есть ли объяснение?
Я знаю, что это хорошая практика, чтобы использовать синтаксис package::function()
использовать функцию внутри нового пакета. Так что же является лучшим решением в этом случае?
Вот моя сессия_инфо:
> devtools::session_info()
Session info ----------------------------------------------------------------------------------------------------------------------------------------------------
setting value
version R version 3.3.1 (2016-06-21)
system x86_64, linux-gnu
ui RStudio (1.0.35)
language (EN)
collate C
tz <NA>
date 2016-11-07
Packages --------------------------------------------------------------------------------------------------------------------------------------------------------
package * version date source
Rcpp 0.12.7 2016-09-05 CRAN (R 3.2.3)
assertthat 0.1 2013-12-06 CRAN (R 3.2.2)
devtools 1.12.0 2016-06-24 CRAN (R 3.2.3)
digest 0.6.10 2016-08-02 CRAN (R 3.2.3)
lazyeval * 0.2.0.9000 2016-10-14 Github (hadley/lazyeval@c155c3d)
memoise 1.0.0 2016-01-29 CRAN (R 3.2.3)
tibble * 1.2 2016-08-26 CRAN (R 3.2.3)
withr 1.0.2 2016-06-20 CRAN (R 3.2.3)
1 ответ
Решение
Это просто ошибка в функции uq(). Вопрос открыт на Github: https://github.com/hadley/lazyeval/issues/78.