啊啊啊啊啊吖

2019-03-08   阅读量: 824

数据分析师 R语言

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

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
6.9776 1 4 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子