2016-11-07 4 views
1

私はuq()関数の動作に困惑しています。 uq()またはlazyeval::uq()を使用した場合の動作は同じではありません。パッケージ内のuq()関数はどのように使うべきですか?

ここ

は私の再現性の例である:

まず、私はその後、私は唯一のuq()を使用して、おもちゃの機能、toy_function_v1を書く

library(tibble) 
library(lazyeval) 
fruits <- c("apple", "banana", "peanut") 
price <- c(5,6,4) 
table_fruits <- tibble(fruits, price) 

偽のデータセットを生成します。

toy_function_v1 <- function(data, var) { 
    lazyeval::f_eval(f = ~ uq(var), data = data) 
} 

とA第2の機能を使用して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/[email protected]) 
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) 

答えて

関連する問題