热线电话:13121318867

登录
2019-03-08 阅读量: 1231
dplyr arrange()的问题

我在网上找到的有关tidyeval的所有内容都是较旧的,并且不及最新版本的tidyverse \ dplyr,或者不太适用。

一个示例是:

df <- tribble(

~var1, ~var2, ~var3,

1, 2, 3,

4, 5, 6,

7, 8, 9

)

我写了一个小函数:

fun <- function(data, select_var, arrange_var) {

select_var <- enquo(select_var)

arrange_var <- enquo(arrange_var)

data %>%

select(!!select_var) %>%

arrange(!!arrange_var)

}

该函数只选择列,然后按行排列。

当我将参数传递给函数时,它可以正常使用c()中的单个变量:

fun(df,

c(var1,

var2)),

c(var2))

但是,当我尝试传递两个这样的变量时:

fun(df,

c(var1,

var2)),

c(var1,

var2))

我收到以下错误:

Error: incorrect size (282) at position 1, expecting : 141

解决办法:更换arrange_var有...和没有封闭他们指定的变量c()也可以正常工作。

library("dplyr")

df <- tribble(

~var1, ~var2, ~var3,

1, 2, 3,

4, 5, 6,

7, 8, 9

)

fun <- function(data, select_var, ...) {

select_var <- enquo(select_var)

arrange_var <- enquos(...)

data %>%

select(!!select_var) %>%

arrange(!!!arrange_var)

}

fun(df, c(var1, var2), var2)

#> # A tibble: 3 x 2

#> var1 var2

#> <dbl> <dbl>

#> 1 1 2

#> 2 4 5

#> 3 7 8

fun(df, c(var1, var2), var1, var2)

#> # A tibble: 3 x 2

#> var1 var2

#> <dbl> <dbl>

#> 1 1 2

#> 2 4 5

#> 3 7 8

6.9776
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子