Я пытаюсь создать функцию в R, которая реплицирует функцию EOMonth Excel (то есть вы вводите дату и количество месяцев и возвращает дату окончания месяца такое же количество месяцев до/после даты ввода). У меня есть есть функция, которая работает на одном входе с использованием пакета lubridate:Работа с NA в векторах с определенными пользователем функциями
EOMonth <- function(date, months)
{
NewDate <- date %m+% months(months)
NewDate <- ceiling_date(NewDate, "month") - days(1)
}
Проблема заключается в том, как «vectorise» это (не уверен, что это правильное слово). Когда я передать функции вектора (в данном случае столбец в кадре данных), я получаю следующее сообщение:
NAs не допускаются в подстрочных присвоений
Я не хочу игнорировать любые NA в векторе (потому что я отправляю результаты в новый столбец в фрейме данных). Я просто хочу, чтобы функция, когда она видит NA, возвращает NA, но обрабатывает все допустимые даты, как это диктует функция. Я действительно запутался в том, как это сделать; большинство сообщений, которые я видел по этой теме, относятся к тому, как игнорировать/удалять NA из результатов.
Любая помощь была бы принята с благодарностью.
Спасибо.
Редактировать. Добавлено в некоторые примеры данных. Ниже приведен пример входных данных:
01/07/2016
NA
22/07/2016
NA
30/06/2016
22/07/2016
22/07/2016
29/07/2016
NA
22/07/2016
30/06/2016
NA
31/01/2016
02/08/2016
Таким образом, введя следующее:
newVector <- EOMonth(OldVector, 3)
Если вернуться к концу месяца на каждую дату через 3 месяца:
31/10/2016
NA
31/10/2016
NA
30/09/2016
31/10/2016
31/10/2016
31/10/2016
NA
31/10/2016
30/09/2016
NA
NA
30/04/2016
30/11/2016
Есть ли у вас данные примера? Это очень важно, чтобы люди быстро ответили на ваш вопрос. –
Привет, Sander. Конечно. Должен ли я просто вставить свой оригинальный комментарий? Я редко задаю вопрос на сайте, так что немного невежественный. Сожалею. – sotiris
Вы можете отредактировать свой вопрос и добавить пример данных! Вы можете просто сделать '' 'head (dput())' '' на вашем фреймворке данных. –