小编tha*_*ndi的帖子

R:case_when用dplyr mutate产生意外的"NA"

我有以下用户定义的功能

vareas1 <- function(a, b, c) {
  case_when(a == 1 ~ "top",
            b == 1 ~ "left",
            c == 1 ~ "right",
            near(a, 1/3) && near(b, 1/3) && near(c, 1/3) ~ "centre"
  )
}
Run Code Online (Sandbox Code Playgroud)

test2 <- vareas1(1/3, 1/3, 1/3)

正确评估

[1] "centre.

但是,当通过dplyr的mutate应用它时,它有时会产生NA.示例如下:

test1 <- data.frame("a" = c(1, 0, 0, 1/3),
                "b" = c(0, 1, 0, 1/3), 
                "c" = c(0, 0, 1, 1/3)) %>% mutate(area1 = vareas1(a, b, c))
Run Code Online (Sandbox Code Playgroud)

这导致:

          a         b         c area1
1 1.0000000 0.0000000 0.0000000   top …
Run Code Online (Sandbox Code Playgroud)

r na dplyr mutate

1
推荐指数
1
解决办法
129
查看次数

标签 统计

dplyr ×1

mutate ×1

na ×1

r ×1