来自不合适的mapply的日期输出格式

时间:2014-01-05 14:44:24

标签: r date vectorization apply mapply

我有一个执行某些条件检查并输出“Date”对象的函数。 “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 个答案:

答案 0 :(得分: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"