J'obtiens une erreur en essayant de comparer et de définir les valeurs de chaîne de semaine en tant que "week-end" ou "jour de semaine" en utilisant R. Toutes les suggestions sur la façon d'aborder ce problème d'une meilleure manière seraient excellentes.
x <- c("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
setDay <- function(day){
if(day == "Sat" | "Sun"){
return("Weekend")
} else {
return("Weekday")
}
}
sapply(x, setDay)
Voici l'erreur que je retrouve dans RStudio:
Error in day == "Sat" | "Sun" :
operations are possible only for numeric, logical or complex types
Au lieu d'utiliser sapply
pour parcourir chaque jour individuel dans x
et vérifier si c'est le jour de la semaine ou le week-end, vous pouvez le faire en une seule opération vectorisée avec ifelse
et %in%
:
ifelse(x %in% c("Sat", "Sun"), "Weekend", "Weekday")
# [1] "Weekday" "Weekday" "Weekday" "Weekday" "Weekday" "Weekend" "Weekend"
La motivation pour utiliser des opérations vectorisées ici est double - cela vous évitera de taper et rendra votre code plus efficace.