簡體   English   中英

如何在 dplyr 中使用表達式列表進行變異?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM