why does this work?
createTibble <- function(i, yr, wk){
if(missing(wk)){
list_sheets[[i]]%>%
filter(LASTUSER %in% users ) %>%
mutate(year = as.numeric(format(DATEMODIFI, format = "%Y")),
month = as.numeric(format(DATEMODIFI, format = "%m")),
week = week(DATEMODIFI),
day = as.numeric(format(DATEMODIFI, format = "%d")))%>%
select(-DATEMODIFI) %>%
filter(year == yr)
} else{
list_sheets[[i]]%>%
filter(LASTUSER %in% users ) %>%
mutate(year = as.numeric(format(DATEMODIFI, format = "%Y")),
month = as.numeric(format(DATEMODIFI, format = "%m")),
week = week(DATEMODIFI),
day = as.numeric(format(DATEMODIFI, format = "%d")))%>%
select(-DATEMODIFI) %>%
filter(year == yr) %>%
filter(week == wk)
}
}
but not this?
createTibble <- function(i, yr, wk){
list_sheets[[i]]%>%
filter(LASTUSER %in% users ) %>%
mutate(year = as.numeric(format(DATEMODIFI, format = "%Y")),
month = as.numeric(format(DATEMODIFI, format = "%m")),
week = week(DATEMODIFI),
day = as.numeric(format(DATEMODIFI, format = "%d")))%>%
select(-DATEMODIFI) %>%
if_else(missing(wk),filter(year == yr),filter(year == yr) %>% filter(week == wk)) }
Error: `condition` must be a logical vector, not a `tbl_df/tbl/data.frame` object
Run `rlang::last_error()` to see where the error occurred.
The top works but I don't want to repeat the same code twice. Is there a way to use if_else()
with this type of argument? or do I need to do something else?