Формат вывода даты из mapply не подходит
У меня есть функция, которая выполняет некоторую проверку состояния и выводит объект "Дата". Класс "s" это "Дата". Но вывод "mapply" представляет собой числовой вектор. Я хочу, чтобы вывод "dataF1$RECENCY" также был объектом Date. Нужна помощь в этом
dataF1 = read.csv("C:\\Users\\DATA.csv", header = TRUE, sep = ",")
dataF1$DT = as.Date(dataF1$DT, format = "%d-%b-%y")
myFunction <- function(x, y, z){
if (x == "U"){
s = z + 60
}
else {
if (y == "ANNUAL"){
s = z + 30
}
else {
s = z + 15
}
}
print (s)
print (class(s))
return(s)
}
dataF1$RECENCY = mapply(myFunction, x = dataF1$TYPE, y = dataF1$PAYMENT, z = dataF1$DT)
> head(dataF1$RECENCY)
[1] 13966 14340 14467 13752 13721 13752
1 ответ
Решение
Не позволяйте mapply
упростить ваш результат.
> mapply(function(x) {as.Date(x, format = "%m.%d.%Y")}, x = "1.5.2014", SIMPLIFY = FALSE)
$`1.5.2014`
[1] "2014-01-05"
> mapply(function(x) {as.Date(x, format = "%m.%d.%Y")}, x = "1.5.2014", SIMPLIFY = TRUE)
1.5.2014
16075
Вы можете создать свой собственный вектор, используя do.call
,
out <- mapply(function(x) {as.Date(x, format = "%m.%d.%Y")}, x = c("1.5.2014", "2.5.2014"), SIMPLIFY = FALSE)
do.call("c", out)
1.5.2014 2.5.2014
"2014-01-05" "2014-02-05"