首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:将字符串转换为“`tidytable::complete()”中的变量名

R:将字符串转换为“`tidytable::complete()”中的变量名
EN

Stack Overflow用户
提问于 2022-03-21 16:45:44
回答 1查看 49关注 0票数 1

对于给定的一组列,我想运行complete,但由于某些原因我无法理解,将字符串转换为变量名的usual methods不起作用:

代码语言:javascript
复制
input <- tidytable::tidytable(a = sample(LETTERS, size = 100, replace = TRUE), 
                             b = sample(letters, size = 100, replace = TRUE), 
                             c = runif(n = 100))

expected <- input %>% tidytable::complete.(a, b)

columns <- c("a", "b")

attempt1 <- input %>% tidytable::complete.(!!columns) # Error in get_bys(x, y, by) : by.y columns not in y
attempt2 <- input %>% tidytable::complete.(!!!columns) # Error in get_bys(x, y, by) : by.y columns not in y
attempt3 <- input %>% tidytable::complete.(eval(as.name(columns)))  # Error in get_bys(x, y, by) : by.y columns not in y
attempt4 <- input %>% tidytable::complete.(eval(quote(columns))) # Error in get_bys(x, y, by) : by.y columns not in y

attempt5 <- input %>% tidytable::complete.(as.name(columns)) # Error in CJ(`as.name(columns)` = .Primitive("quote")(a), unique = TRUE,  : 'sorted' is TRUE but element 1 is non-atomic, which can't be sorted; try setting sorted = FALSE
attempt6 <- input %>% tidytable::complete.(vars(tidytable::any_of("a"))) # Error in CJ(`vars(tidytable::any_of(a))` = list(~tidytable::any_of(a)), : 'sorted' is TRUE but element 1 is non-atomic, which can't be sorted; try setting sorted = FALSE

attempt7 <- input %>% tidytable::complete.(as.name(columns, sorted = FALSE)) # Error in as.name(columns, sorted = FALSE) : unused argument (sorted = FALSE)
attempt8 <- input %>% tidytable::complete.(vars(tidytable::any_of("a", sorted = FALSE), sorted = FALSE)) # Error in CJ(`vars(tidytable::any_of(a))` = list(~tidytable::any_of(a)), : 'sorted' is TRUE but element 1 is non-atomic, which can't be sorted; try setting sorted = FALSE
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-21 16:47:19

我们需要syms转换成符号,然后进行计算(!!!)

代码语言:javascript
复制
input %>% 
   tidytable::complete.(!!! rlang::syms(columns))

-output

代码语言:javascript
复制
# A tidytable: 657 × 3
   a     b         c
   <chr> <chr> <dbl>
 1 A     a        NA
 2 A     b        NA
 3 A     c        NA
 4 A     d        NA
 5 A     e        NA
 6 A     f        NA
 7 A     g        NA
 8 A     h        NA
 9 A     i        NA
10 A     j        NA
# … with 647 more rows
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71561154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档