tidyeval

    1熱度

    1回答

    使用foo(c("b"))調用以下函數。輸出顯示爲內聯。 我很困惑,爲什麼(1)df %>% mutate(!!x_ := 100 + !!x))和(2)df %>% mutate(!!x := 100 + !!x))工作原理相同;基於dplyr programming recipes只有(1)應該工作。 foo <- function(variables) { x <- rlang:

    0熱度

    1回答

    我正在創建一個包,它使用non-standard evaluation來跟蹤列的含義。這個包在函數中傳遞一個數據幀,這些函數執行相同的一組列。非標準評價這一偉大工程: my_select <- function(df, xcol, ycol) { new_df <- dplyr::select(df, !!xcol, !!ycol) new_df } my_select(m

    1熱度

    1回答

    我想寫使用tidyeval(非標準評價)。採用基礎R NSE圍繞「LM」的功能,它的工作原理: lm_poly_raw <- function(df, y, x, degree = 1, ...){ lm_formula <- substitute(expr = y ~ poly(x, degree, raw = TRUE), env = list(y = su

    0熱度

    1回答

    我想在我的數據上使用dplyr的新NSE符號(版本> = 0.6)作爲動態filter。比方說,我有以下的虛擬數據集: df = data_frame(x = 1:10, y = 10:1, z = 10 * runif(10)) 如果現在我要當數值大於5,我知道更大的過濾列tofilter = "x"我可以這樣做: df %>% filter((!!rlang::sym(tofil

    2熱度

    1回答

    我正在尋找一種方法來連接一個結果和一個字符串,其結果是一個平靜。其實,如果我使用paste0()和quo_name(),我可以做到。但我想知道是否有更優雅的替代方案在我的包中編寫函數。這是一個普通的例子: library(dplyr) df <- data_frame( z_1 = 1, z_2 = 2, y_1 = 10, y_2 = 20 ) g

    0熱度

    2回答

    我想創建一個函數,將列名稱列表傳遞給dplyr函數。我知道,如果列名稱的列表中...形式給出如何做到這一點,作爲tidyeval文檔中解釋說: df <- tibble( g1 = c(1, 1, 2, 2, 2), g2 = c(1, 2, 1, 2, 1), a = sample(5), b = sample(5) ) my_summarise <-

    8熱度

    4回答

    我很困惑如何函數的參數傳遞到dplyr和ggplot代碼。 我使用dplyr和GGPLOT2 這裏的最新版本是我的代碼產生barplot(淨度VS的平均價格) diamond.plot<- function (data, group, metric) { group<- quo(group) metric<- quo(metric) data() %>% group_

    0熱度

    1回答

    我創建了一個函數來計算「運行」的數量或丟失或完整的數據 - 我希望這個和dplyr::group_by一起工作,所以我把它寫成S3方法 - 下面是一個此代碼的簡化示例。 不幸的是,我發現裸引號變量名稱不起作用,但引用它,這確實有效,奇怪的是。 下面是一個輸出的例子 fun_run <- function(data, var) { UseMethod("fun_run") }

    0熱度

    2回答

    如果我不想在調用該函數之前指定列,我將如何創建一個函數來刪除列中的NA值? minimal_case <- function(column_name = "a") { enquo_name <- enquo(column_name) example <- tibble(a = c(NA, 1)) print(filter(example, !is.na(a)))

    1熱度

    2回答

    我有一個自定義函數,它彙總了一個變量。 我簡化了函數來說明我的問題,即它比下面顯示的更復雜。請注意,該函數的一般結構應該保持不變:它需要一個參數來指定要使用哪個數據幀(df)以及一個變量進行彙總的參數(variable_to_test)。 my_fun <- function(df, variable_to_test) { variable_to_test <- enquo(varia