使用`nest_`用公式引用变量
Quoting variables with the formula using `nest_`
我正在使用带有公式界面的 tidyverse
函数的逃生舱口版本,当“-”与 nest_
相关时,我遇到了一些问题。
虽然这个块有效:
select_(mtcars, ~ -cyl)
类似的东西不适用于 nest_
nest_(mtcars, ~ -cyl)
Error in x[[i]] <- value : invalid subscript type 'language'
有没有办法让它在不写入所有剩余列的情况下工作?
在你给出的例子中,你真的不需要标准评估(SE)版本;你可以只使用 nest
而没有 ~
:
library(tidyr)
mtcars %>% nest(-cyl)
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
如果您的实际情况更复杂并且确实需要 SE,请注意 tidyverse 正在切换到基于 rlang 的 NSE 系统,因此 *_
版本将被弃用,取而代之的是:
mtcars %>% nest(-!!rlang::quo(cyl))
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
或者用字符串,
mtcars %>% nest(-!!rlang::sym('cyl'))
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
如果您从 GitHub 安装 tidyr,两者都已经可以工作了。如果你真的想让旧式工作,你可以像这样让它工作:
mtcars %>% nest_('data', names(.)[names(.) != 'cyl'])
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
我正在使用带有公式界面的 tidyverse
函数的逃生舱口版本,当“-”与 nest_
相关时,我遇到了一些问题。
虽然这个块有效:
select_(mtcars, ~ -cyl)
类似的东西不适用于 nest_
nest_(mtcars, ~ -cyl)
Error in x[[i]] <- value : invalid subscript type 'language'
有没有办法让它在不写入所有剩余列的情况下工作?
在你给出的例子中,你真的不需要标准评估(SE)版本;你可以只使用 nest
而没有 ~
:
library(tidyr)
mtcars %>% nest(-cyl)
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
如果您的实际情况更复杂并且确实需要 SE,请注意 tidyverse 正在切换到基于 rlang 的 NSE 系统,因此 *_
版本将被弃用,取而代之的是:
mtcars %>% nest(-!!rlang::quo(cyl))
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
或者用字符串,
mtcars %>% nest(-!!rlang::sym('cyl'))
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>
如果您从 GitHub 安装 tidyr,两者都已经可以工作了。如果你真的想让旧式工作,你可以像这样让它工作:
mtcars %>% nest_('data', names(.)[names(.) != 'cyl'])
#> # A tibble: 3 x 2
#> cyl data
#> <dbl> <list>
#> 1 6 <tibble [7 x 10]>
#> 2 4 <tibble [11 x 10]>
#> 3 8 <tibble [14 x 10]>