簡體   English   中英

在 dplyr::mutate 中傳遞一個字符串作為變量名

[英]Pass a string as variable name in dplyr::mutate

我一直在閱讀這篇關於如何處理 dplyr 中變量的字符串引用的 SO 文章。

我想根據字符串輸入改變現有列:

var <- 'vs'
my_mtcars <- mtcars %>% 
  mutate(get(var) = factor(get(var)))

錯誤:意外的 '=' 在:“my_mtcars <- mtcars %>% mutate(get(var) ="

還試過:

my_mtcars <- mtcars %>% 
  mutate(!! rlang::sym(var) = factor(!! rlang::symget(var)))

這導致了完全相同的錯誤消息。

如何基於在 var 變量中傳遞字符串 'vs' 來執行以下操作?

# works
my_mtcars <- mtcars %>% 
  mutate(vs = factor(vs))

該操作可以與進行:=在評估( !! ),並使用轉換到sym BOL和上分配的RHS評價

library(dplyr)
my_mtcars <- mtcars %>% 
       mutate(!! var  := factor(!! rlang::sym(var)))
class(my_mtcars$vs)
#[1] "factor"

或者不用考慮太多,使用mutate_at ,它可以在vars獲取字符串並應用感興趣的function

my_mtcars2 <- mtcars %>% 
                    mutate_at(vars(var), factor)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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