讓我們以這個假設的代碼為例:
```{r}
dataset_custom <- function(top, dataset, variable) {
{{dataset}} %>%
count({{variable}}) %>%
top_n(top, n) %>%
arrange(-n) %>%
left_join({{dataset}}, by = "{{variable}}")
}
```
我知道這會在我嘗試運行(例如)時回傳錯誤,dataset_custom(5, dataset, variable)因為by = "{{variable}}"在 left_join 中。我該如何解決這個問題?
我知道,當你離開加盟,你想通過特定的變數,加入它you do by = "variable"在那里variable周圍有報價,但我怎么做時,我把它寫成一個函式,我想在報價的東西變化取決于我試圖創建的函式的輸入?
謝謝!
uj5u.com熱心網友回復:
如果您提供一些玩具資料,例如在?left_join. 請注意,這left_join(df1, df1)只是df1. 相反,我們可以使用第二個資料引數。
df1 <- tibble(x = 1:3, y = c("a", "a", "b"))
df2 <- tibble(x = c(1, 1, 2), z = c("first", "second", "third"))
df1 %>% left_join(df2, by = "x")
f <- function(data, data2, variable) {
var <- deparse(substitute(variable))
data %>%
count({{ variable }}) %>%
arrange(-n) %>%
left_join(data2, by = var)
}
f(df1, df2, x)
x n z
<dbl> <int> <chr>
1 1 1 first
2 1 1 second
3 2 1 third
4 3 1 NA
# and
f(df2, df1, x)
x n y
<dbl> <int> <chr>
1 1 2 a
2 2 1 a
為此,我們需要使用defusing 操作,以便正確評估輸入。形象地說,使用{{ }}asby論點就像用錘子代替砂紙打磨東西——這是一種不應該發生的強制操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359360.html
下一篇:我可以將列印輸出分配給變數嗎?
