По умолчанию я устанавливаю аргумент cut.points
как NA, и если он по умолчанию, он не должен ничего делать с данными.
Но если пользователь решает ввести, например, cut.points = c("2012-01-01", "2013-01-01")
, тогда данные должен быть отфильтрован по столбцу, в котором есть даты. И он должен возвращать только даты с 2012 по 2013 год. Проблема в том, что я читаю данные из функции, поэтому теоретически я не знаю, как называется этот столбец даты, который использует предоставляет. Итак, я нахожу столбец с датами и сохраняю его имя в переменной.
Но условие, которое я написал, которое должно фильтровать на основе этой переменной, не работает:
modifier <- function(input.data, cut.points = c(NA, NA)) {
date_check <- sapply(input.data, function(x) !all(is.na(as.Date(as.character(x),format="%Y-%m-%d"))))
if (missing(cut.points)) {
input.data
} else {
cols <- colnames(select_if(input.data, date_check == TRUE))
cut.points <- as.Date(cut.points)
input.data <- filter(input.data, cols > cut.points[1] & cols < cut.points[2])
}
}
для ex . когда я пытаюсь запустить это:
modifier(ex_data, cut.points = c("2012-01-01", "2013-01-01"))
В примере, подобном этому:
ex_data
Row.ID Order.ID Order.Date
1 32298 CA-2012-124891 2012-07-31
2 26341 IN-2013-77878 2013-02-05
3 25330 IN-2013-71249 2013-10-17
4 13524 ES-2013-1579342 2013-01-28
5 47221 SG-2013-4320 2013-11-05
6 22732 IN-2013-42360 2013-06-28
7 30570 IN-2011-81826 2011-11-07
8 31192 IN-2012-86369 2012-04-14
9 40155 CA-2014-135909 2014-10-14
10 40936 CA-2012-116638 2012-01-28
11 34577 CA-2011-102988 2011-04-05
12 28879 ID-2012-28402 2012-04-19
13 45794 SA-2011-1830 2011-12-27
14 4132 MX-2012-130015 2012-11-13
15 27704 IN-2013-73951 2013-06-06
16 13779 ES-2014-5099955 2014-07-31
17 36178 CA-2014-143567 2014-11-03
18 12069 ES-2014-1651774 2014-09-08
19 22096 IN-2014-11763 2014-01-31
20 49463 TZ-2014-8190 2014-12-05
ошибка: символьная строка не в стандартном однозначном формате