相关疑难解决方法(0)

if_else()`false`必须是double类型,而不是整数 - 在R中

一串长dplyr管道的末端是

mutate(n = if_else(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3, n))

这给出了这个错误

Error in mutate_impl(.data, dots) : Evaluation error: `false` must be type double, not integer.
Run Code Online (Sandbox Code Playgroud)

如果我改为这两个中的任何一个,那就会消失

mutate(n = ifelse(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3, n))

mutate(n = if_else(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3L, n))

我认为做一个简单的可重复娱乐是最简单的,所以我做了你在下面看到的,但我不能再得到错误了.知道发生了什么事吗?为什么不在ifelse哪里工作,如果我改变3到3L if_else,为什么if_else工作?我理解L 强制 3是一个整数,这是正确的吗?

library(tidyverse)
df <- tribble(
  ~name, ~fruit, ~qty,
  "Bob", "apple", 10,
  "Bill", "apple", …
Run Code Online (Sandbox Code Playgroud)

if-statement r dplyr

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

R,dplyr:如何根据其他列中的 NA 值将一列中的值更改为 NA(使用 OR 运算符)

这个问题很难用标题行来表达,但它与通常的“如何根据另一列中的值更改一列中的值”不同。有两个问题我在其他地方没有看到处理过:1)我正在处理 NA,而不是值,2)我正在处理涉及多个列之间 OR 关系的条件,即 if is V01NA V02is NA ,然后使foo该行的 var(已存在但没有 NA)为 NA。

这是一个小问题来说明:

tbl <- tibble(
  V01 = 10:15,
  V02 = 1:6,
  V03 = V02 * 2,
  foo = V03 * 2
)
# sprinkle around some NAs
tbl[1,2] = NA
tbl[4,1] = NA
tbl[4,2] = NA
tbl[6,1:3] = NA
Run Code Online (Sandbox Code Playgroud)

产生这个表:

# A tibble: 6 x 4
    V01   V02   V03   foo
  <int> <int> <dbl> <dbl>
1    10    NA     2     4
2    11     2     4 …
Run Code Online (Sandbox Code Playgroud)

r na dplyr tidyverse

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

标签 统计

dplyr ×2

r ×2

if-statement ×1

na ×1

tidyverse ×1