如何解决卷曲卷曲将列名传递给mutate或regex_left_join返回错误,找不到赋值运算符`:=`
我在控制台中遇到错误:
错误:=
({:找不到函数“:=”
我仅使用Fuzzyjoin(由David Robinson提供)和tidyverse软件包。该函数被接受,没有语法错误。在执行时,错误抛出给我。可能是什么原因?
df_recode_brand_name <-
tibble(
regex_name = c("wacoal|tempt","calvin","hanky","victoria"),return_name = c("wacoal","victoria"))
df_recode_product_category <-
tibble(
regex_name = c("lingerie","pant","bra","undies"),return_name = c("lingerie","undies"))
fn_regex_recode <- function(df,df_recode_dic,col_name) {
df %>% regex_left_join(
df_recode_dic,by = c({{col_name}} := "regex_name"),ignore_case = T ) %>%
mutate({{col_name}} := if_else(is.na(return_name),str_to_lower({{col_name}}),return_name)) %>%
select(-regex_name,-return_name)
}
df_raw2 <-
df_raw %>%
fn_regex_recode(df_recode_brand_name,brand_name) %>%
fn_regex_recode(df_recode_product_category,product_category)
这是示例数据
df_raw <-
tibble::tribble(
~brand_name,~product_category,~description,"Calvin Klein","Women - Lingerie & Shapewear - Bras","Practice bold,fearl","Wacoal","Bras","Beautiful all over c","Victoria's Secret","Add-2-Cups Push-Up Bra","The ultimate lift-lo","Women - Lingerie & Shapewear - Sexy Lingerie","With luscious lace a","Incredible by Victoria Sport Bra","Tackle high-intensit","Women - Lingerie & Shapewear - Designer Lingerie","Moderate coverage th","Wicked Unlined Uplift Bra","A little lift goes a","Crochet Lace Cheekster Panty","The prettiest croche","Curved-hem Thong Panty","Seriously sleek and","Perfect Coverage Bra","Our fullest coverage","US TOPSHOP","Lingerie","Revamp your lingerie","Sleepwear","a modern cotton loun","AERIE","Everyday Loves Undies 7 for $27.50 USD","Introducing Everyday","b.tempt'd by Wacoal","Sheer and sexy,the","Discover the glove-l","Victoria's Secret Pink","Wear Everywhere Push-Up Bra","An everyday fave wit","WACOAL","PANTIES","A sheer lace panty t","Add-1?-Cups Push-Up Bra","This push-up gives y","Sport bra offers gre"
)
解决方法
尝试在setNames
中使用by
传递命名向量。
library(dplyr)
library(fuzzyjoin)
library(rlang)
fn_regex_recode <- function(df,df_recode_dic,col_name) {
val <- deparse(substitute(col_name))
df %>%
regex_left_join(
df_recode_dic,by = setNames('regex_name',val),ignore_case = TRUE) %>%
mutate({{col_name}} := if_else(is.na(return_name),str_to_lower({{col_name}}),return_name)) %>%
select(-regex_name,-return_name)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。