我看到很多關于將列名作為字串傳遞給函式的帖子,但他們都沒有考慮這個用例。我看到的所有方法都不起作用。這是一個。請將該what_I_want列與what_I_get下面的列進行比較。當然,我想要列中專案的值,而不是列名。謝謝。
library(dplyr)
Fun <- function(df,column) {
df %>%
mutate(what_I_want = cyl) %>%
# current best practice? Doen't work in this case.
mutate(what_I_get := {{column}})
}
mtcars[1:2,1:3] %>% Fun("cyl")
#> mpg cyl disp what_I_want what_I_get
#> Mazda RX4 21 6 160 6 cyl
#> Mazda RX4 Wag 21 6 160 6 cyl
使用 reprex v2.0.2 創建于 2022-11-07
uj5u.com熱心網友回復:
只需添加get
Fun <- function(df,column) {
df %>%
mutate(what_I_want = get(column) )
}
mtcars[1:2,1:3] %>% Fun("cyl")
mpg cyl disp what_I_want
Mazda RX4 21 6 160 6
Mazda RX4 Wag 21 6 160 6
uj5u.com熱心網友回復:
我們可以使用ensymwhich 可以同時使用帶引號和不帶引號的列名
Fun <- function(df,column) {
df %>%
mutate(what_I_want = !! rlang::ensym(column))
}
-測驗
> mtcars[1:2,1:3] %>% Fun("cyl")
mpg cyl disp what_I_want
Mazda RX4 21 6 160 6
Mazda RX4 Wag 21 6 160 6
> mtcars[1:2,1:3] %>% Fun(cyl)
mpg cyl disp what_I_want
Mazda RX4 21 6 160 6
Mazda RX4 Wag 21 6 160 6
uj5u.com熱心網友回復:
使用.data代詞你可以:
library(dplyr)
Fun <- function(df,column) {
df %>%
mutate(what_I_get = .data[[column]])
}
mtcars[1:2,1:3] %>%
Fun("cyl")
#> mpg cyl disp what_I_get
#> Mazda RX4 21 6 160 6
#> Mazda RX4 Wag 21 6 160 6
有關.data代詞的更多資訊,請參閱資料掩碼編程模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529069.html
標籤:rdplyr
上一篇:R中同時存在分類列和數值列時如何洗掉頂部和底部百分位值
下一篇:基于條件aR的列總和
