dplyr`nth()`无法将其传递给管道[length(n)== 1错误]

时间:2019-02-01 17:16:18

标签: r dplyr

我可以提取从使用dplyr的ngOnInit():void { this.route.fragment.subscribe( (fragment) => { this.setSegment(fragment); } ); } 功能mtcars数据帧的值。

nth()

然而,当我管它我得到以下错误。

library(tidyverse)
nth(mtcars$cyl, 2)
#> [1] 6

我如何正确地 '管' 呢?

2 个答案:

答案 0 :(得分:2)

?nth

  

x-一个向量

当你mtcars$cyl,它返回一个矢量。但是,

mtcars %>% nth(cyl, 2)

时,通过一列cyl

可能需要pull第一个获得一个矢量。

mtcars %>% pull(cyl) %>% nth(2)
#[1] 6

答案 1 :(得分:2)

1)第n个参数不是数据框,因此请使用大括号并明确引用点:

mtcars %>% { nth(.$cyl, 2) }
## [1] 6

2)另一种可能性是使用magrittr的%$%运算符:

library(magrittr)

mtcars %$% nth(cyl, 2)
## [1] 6

第3)或使用with

mtcars %>% with(nth(cyl, 2))
## [1] 6

4)或使用$

mtcars %>% `$`(cyl) %>% nth(2)
## [1] 6

5)或magrittr extract2

library(magrittr)

mtcars %>% extract2("cyl") %>% nth(2)
## [1] 6