r - 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
解决方案
您可以使用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
推荐阅读
- python - 如何在 Windows 版 Git Bash 中启用 Python 上次命令历史记录?
- autohotkey - 我需要一个热键,例如“c”来启用脚本
- javascript - Camera js Web App无法获取相机供稿
- powershell - 将日历添加到组合框
- git - 如何获取 tfs 中两个变更集或 git 中两个分支的多个文件的所有更改?
- video - 视频点播如何在 Youtube 中工作?
- gcc - 为什么独立的 C hello 程序在用作动态链接器时会崩溃
- javascript - 使用变量推送json
- javascript - 在 React 状态下使用嵌套对象
- haskell - 将 Ord 转换为小数