[英]How to use expression list for mutate in dplyr?
我發現通常在dplyr
中工作的數據屏蔽在與!!
一起使用時停止工作! 操作員。
考慮一個簡單的例子。
trans <- list(
a = rlang::expr(val),
b = rlang::expr(val*2)
)
df <- data.frame(name = c("a", "b"), val = 2:3)
然后,我想使用我的列表trans
根據name
中的值修改val
列。 然后,以下代碼將不起作用。
library(dplyr)
df %>%
rowwise() %>%
mutate(val = !!trans[[ name ]])
似乎沒有找到該name
。 如果使用普通變量代替 dataframe 中的name
列,則上面的代碼將起作用。
我應該如何修改代碼以使其按預期工作? 謝謝。
您可以使用eval
:
library(dplyr)
df %>%
rowwise() %>%
mutate(val_res = eval(trans[[name]]))
# name val val_res
# <chr> <int> <dbl>
#1 a 2 2
#2 b 3 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.