不能在r中的mutate_if function中使用is.na()函数

不能在r中的mutate_if function中使用is.na()函数,r,dplyr,R,Dplyr,我试图在mutate\u if()中使用is.na(),但出现了一个错误: is_逻辑(.p)中出错:找不到对象“n_day” n\u day确实是在我的数据帧中,我认为因为的参数集是.na(),我不能在mutate\u if()中使用它,但我不知道如何解决它 如果n_day中的值为NA,则在同一天将其替换为n_cum中的值 任何帮助都将不胜感激 我的代码如下: library(tidyverse) t <- structure(list(city = structure(c(1L, 1

我试图在
mutate\u if()
中使用
is.na()
,但出现了一个错误:

is_逻辑(.p)中出错:找不到对象“n_day”

n\u day
确实是在我的数据帧中,我认为因为
的参数集是.na()
,我不能在
mutate\u if()
中使用它,但我不知道如何解决它

如果
n_day
中的值为
NA
,则在同一天将其替换为
n_cum
中的值

任何帮助都将不胜感激

我的代码如下:

library(tidyverse)

t <- structure(list(city = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                       1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("a", "b"), class = "factor"), 
                    time = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 
                                       3L, 4L, 5L, 6L, 7L, 8L), .Label = c("2012/1/1", "2012/1/2", 
                                                                           "2012/1/3", "2012/1/4", "2012/2/1", "2012/2/2", "2012/2/3", 
                                                                           "2012/2/4"), class = "factor"), n_cum = c(1L, 2L, 3L, 4L, 
                                                                                                                     5L, 6L, 7L, 8L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L)), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                   -16L))
t

t2 <- t %>% group_by(city) %>% 
  mutate(n_day = n_cum - lag(n_cum))

t2 %>% mutate_if(is.na(n_day), n_day = n_cum)
库(tidyverse)
t%
突变(n_天=n_cum-滞后(n_cum))
t2%>%突变如果(is.na(n_天),n_天=n_cum)

mutate\u如果使用
一次对多个列执行操作(),这不是您在此处要查找的内容,因为您只想更改一个列

可以使用
mutate
if_else
解决该问题:

t2 %>% mutate(n_day = if_else(is.na(n_day),n_cum,n_day))

mutate\u如果使用
一次对多个列执行操作(),这不是您在这里要查找的内容,因为您只想更改一个列

可以使用
mutate
if_else
解决该问题:

t2 %>% mutate(n_day = if_else(is.na(n_day),n_cum,n_day))

在+
如果
条件下使用
mutate_

t2%>%在(变量(n_天)~ifelse(is.na(.)、n_cum.)

在选择多个变量的情况下,只需将它们分别添加到
vars
helper中。

使用
mutate\u at
+
if
条件

t2%>%在(变量(n_天)~ifelse(is.na(.)、n_cum.)
在选择多个变量的情况下,只需将它们分别添加到
vars
helper.

t2%groupu by(city)%%>%mutate(n_day=if_else(is.na(lag(n_cum)),n_cum,n_cum-lag(n_cum)))。希望能有帮助。您不需要使用mutate_if.t2%group_by(city)%>%mutate(n_day=if_else(is.na(lag(n_cum)),n_cum,n_cum-lag(n_cum)))。希望能有帮助。如果需要,您不需要使用mutate_。