Другие показали способ получения желаемых результатов, используя слово, но, более конкретно, для вашего вопроса, поток программы if
работает только с одним логическим значением и предназначен для выбора блока кода для запуска.Функция ifelse
будет принимать вектор логических значений и 2 других вектора (один для TRUE, другой для FALSE) и чередовать 2 вектора на основе логического вектора, поэтому один вариант, использующий ifelse
для вашего вопроса, будет:
d$week <- ifelse( d$dayofthemonth < 7, 1,
ifelse( d$dayofthemonth < 14, 2,
ifelse( d$dayofthemonth < 21, 3, 4 ) ) )
Также обратите внимание на функцию findInterval для другого подхода, который, вероятно, проще, чем ifelse
, но также допускает интервалы, которые имеют разную ширину.