2014-01-05 5 views
1

У меня есть функция, которая выполняет некоторую проверку состояния и выводит объект «Дата». Класс «s» - это «Дата». Но вывод «mapply» - это числовой вектор. Я хочу, чтобы выходной «dataF1 $ RECENCY» также был объектом Date. Вам нужна помощьформат вывода даты из mapply не подходит

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 

ответ

2

Не позволяют 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" 
+0

Вы также можете использовать «Карта». – agstudy

 Смежные вопросы

  • Нет связанных вопросов^_^