我在尝试比较时遇到错误,并将工作日字符串值设置为使用R的“周末”或“工作日”。任何有关如何以更好的方式解决此问题的建议都会很棒。
x <- c("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
setDay <- function(day){
if(day == "Sat" | "Sun"){
return("Weekend")
} else {
return("Weekday")
}
}
sapply(x, setDay)
这是我在RStudio中遇到的错误:
Error in day == "Sat" | "Sun" :
operations are possible only for numeric, logical or complex types
答案 0 :(得分:11)
不是使用sapply
循环遍历x
中的每一天并检查它是工作日还是周末,而是可以在ifelse
和{{{{}}的单一矢量化操作中执行此操作1}}:
%in%
在这里使用矢量化操作的动机是双重的 - 它可以节省您的输入,它将使您的代码更有效。