首页 > 解决方案 > tidyr - 嵌套_替代品

问题描述

我正在寻找nesting_在我的代码中替换的方法,因为我看到该函数被标记为Deprecated lifecycle.

这是我用来传递nesting_complete名向量并生成列a和对b&之间所有可能组合的示例代码c

library(tidyr)
library(dplyr)

data <- tibble(a = c(1, 1, 2, 2, 3),
  b = c("P-1", "P-2", "P-3", "P-2", "P-4"),
  c = c("O-1", "O-4", "O-2", "O-3", "O-3"))


# 
nesting_variables <- c("b", "c", "c")
data %>%
  complete(a, nesting_(unique(nesting_variables)))

输出

# A tibble: 15 x 3
       a b     c    
   <dbl> <chr> <chr>
 1     1 P-1   O-1  
 2     1 P-2   O-3  
 3     1 P-2   O-4  
 4     1 P-3   O-2  
 5     1 P-4   O-3  
 6     2 P-1   O-1  
 7     2 P-2   O-3  
 8     2 P-2   O-4  
 9     2 P-3   O-2  
10     2 P-4   O-3  
11     3 P-1   O-1  
12     3 P-2   O-3  
13     3 P-2   O-4  
14     3 P-3   O-2  
15     3 P-4   O-3  

标签: rtidyr

解决方案


您可以使用andnesting代替:syms!!!

library(tidyr)
library(rlang)

data %>% complete(a, nesting(!!!syms(unique(nesting_variables))))

我们可以确认两种解决方案都给出相同的输出:

identical(data %>% complete(a, nesting(!!!syms(unique(nesting_variables)))), 
          data %>% complete(a, nesting_(unique(nesting_variables))))
#[1] TRUE

推荐阅读