在 dplyr::case_when 中使用 NSE

莫霍武

我已经阅读了Programming with dplyr文档并尝试编写一个围绕该case_when()函数的简单函数。

library(dplyr)
data_test <- data.frame(
    a = rep(c("a", "b", "c"), each = 5),
    b = rnorm(15)
)

fun_test <- function(df, var1, var2) {

    var1 <- enquo(var1)
    var2 <- enquo(var2)

    df <- mutate(df,
                 c = case_when(
                     !!var1 == "a" ~ 1,
                     !!var1 == "b" ~ 2,
                     !!var1 == "c" ~ 3
                 ),
                 d = case_when(
                     !!var2 > 0 ~ 1,
                     !!var2 < 0 ~ 0
                 ))

    df

}

fun_test(data_test, a, b)

我希望新列c,并d会基于价值创造ab,而是他们只是NA0任何想法为什么会这样?

干杯。

西多姆

你需要在!!vars周围加上括号,所以!!var1 == "a" ~ 1应该是(!!var1) == "a" ~ 1


fun_test <- function(df, var1, var2) {

    var1 <- enquo(var1)
    var2 <- enquo(var2)

    df <- mutate(df,
                 c = case_when(
                     (!!var1) == "a" ~ 1,
                     (!!var1) == "b" ~ 2,
                     (!!var1) == "c" ~ 3
                 ),
                 d = case_when(
                     (!!var2) > 0 ~ 1,
                     (!!var2) < 0 ~ 0
                 ))

    df       
}

fun_test(data_test, a, b)

#    a           b c d
# 1  a  0.70352390 1 1
# 2  a -0.10567133 1 0
# 3  a -1.25864863 1 0
# 4  a  1.68443571 1 1
# 5  a  0.91139129 1 1
# 6  b  0.23743027 2 1
# 7  b  1.21810861 2 1
# 8  b -1.33877429 2 0
# 9  b  0.66082030 2 1
# 10 b -0.52291238 2 0
# 11 c  0.68374552 3 1
# 12 c -0.06082195 3 0
# 13 c  0.63296071 3 1
# 14 c  1.33551762 3 1
# 15 c  0.00729009 3 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

dplyr和非标准评估(NSE)

来自分类Dev

Case_when使用sum对数据进行分类时-R / dplyr解决方案

来自分类Dev

NSE使用dplyr的do()处理复杂表达式

来自分类Dev

如何在dplyr函数的左侧执行NSE?

来自分类Dev

dplyr:NSE加入中(作者)

来自分类Dev

在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

来自分类Dev

在case_when()的LHS中使用值的位置出现

来自分类Dev

在dplyr中使用case_when时遇到问题

来自分类Dev

如何获得case_when(在dplyr中)接受字符的条件

来自分类Dev

使用dplyr和NSE动态构造具有不同参数的函数调用

来自分类Dev

dplyr:case_when警告:参数'pattern'的经度> 1

来自分类Dev

dplyr case_when具有动态案例数

来自分类Dev

循环使用mutate和case_when

来自分类Dev

dplyr case_when在复杂的情况下

来自分类Dev

在ir dplyr与OR一起使用case_when

来自分类Dev

与dplyr一起使用case_when

来自分类Dev

在Dplyr中使用case_when难以创建新列

来自分类Dev

在case_when中如何使用tidydots?

来自分类Dev

编程功能:DPLYR和PURRR中的NSE

来自分类Dev

R dplyr与mutate()和case_when()有效地使用cross()

来自分类Dev

如何使用dplyr在NSE中获取变量的名称

来自分类Dev

Case_when使用sum对数据进行分类时-R / dplyr解决方案

来自分类Dev

为什么我使用SE或NSE dplyr函数得到不同的结果

来自分类Dev

函数中的dplyr NSE模式:嵌套条件

来自分类Dev

如何在dplyr中使用NSE来引用一个变量?

来自分类Dev

如何在 dplyr mutate() 函数中使用 case_when ?

来自分类Dev

在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

来自分类Dev

使用 NSE 时出错(在 dplyr 中):找不到对象“值”

来自分类Dev

使用 case_when 长格式数据集 dplyr 进行变异

Related 相关文章

  1. 1

    dplyr和非标准评估(NSE)

  2. 2

    Case_when使用sum对数据进行分类时-R / dplyr解决方案

  3. 3

    NSE使用dplyr的do()处理复杂表达式

  4. 4

    如何在dplyr函数的左侧执行NSE?

  5. 5

    dplyr:NSE加入中(作者)

  6. 6

    在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

  7. 7

    在case_when()的LHS中使用值的位置出现

  8. 8

    在dplyr中使用case_when时遇到问题

  9. 9

    如何获得case_when(在dplyr中)接受字符的条件

  10. 10

    使用dplyr和NSE动态构造具有不同参数的函数调用

  11. 11

    dplyr:case_when警告:参数'pattern'的经度> 1

  12. 12

    dplyr case_when具有动态案例数

  13. 13

    循环使用mutate和case_when

  14. 14

    dplyr case_when在复杂的情况下

  15. 15

    在ir dplyr与OR一起使用case_when

  16. 16

    与dplyr一起使用case_when

  17. 17

    在Dplyr中使用case_when难以创建新列

  18. 18

    在case_when中如何使用tidydots?

  19. 19

    编程功能:DPLYR和PURRR中的NSE

  20. 20

    R dplyr与mutate()和case_when()有效地使用cross()

  21. 21

    如何使用dplyr在NSE中获取变量的名称

  22. 22

    Case_when使用sum对数据进行分类时-R / dplyr解决方案

  23. 23

    为什么我使用SE或NSE dplyr函数得到不同的结果

  24. 24

    函数中的dplyr NSE模式:嵌套条件

  25. 25

    如何在dplyr中使用NSE来引用一个变量?

  26. 26

    如何在 dplyr mutate() 函数中使用 case_when ?

  27. 27

    在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

  28. 28

    使用 NSE 时出错(在 dplyr 中):找不到对象“值”

  29. 29

    使用 case_when 长格式数据集 dplyr 进行变异

热门标签

归档