R data.table在lappy中使用if语句

R data.table在lappy中使用if语句,r,if-statement,data.table,lapply,R,If Statement,Data.table,Lapply,我想将一些列从数字格式转换为日期格式;我正在考虑使用以下代码: colList <- c("Date1","Date2") dataDT[, (colList) := lapply(.SD, function(x){ if (x == 0) {NA} else {as.Date(x, origin = "1900-01-01")} }), .SDcols = colList] 有办法解决吗?另一个选项是使用替换: dataDT[, (colList) := lapply(.SD,

我想将一些列从数字格式转换为日期格式;我正在考虑使用以下代码:

colList <- c("Date1","Date2")
dataDT[, (colList) := lapply(.SD, function(x){
  if (x == 0) {NA}
  else {as.Date(x, origin = "1900-01-01")}
}), .SDcols = colList]

有办法解决吗?

另一个选项是使用
替换

dataDT[, (colList) := lapply(.SD, 
        function(x) as.Date(replace(x, x==0, NA), origin = "1900-01-01")),
    .SDcols = colList]
在这种情况下,请使用“ifelse”而不是“if”:

ifelse (x == 0,NA, as.Date(x, origin = "1900-01-01"))

我认为如果不是这样的话,
可能会更安全。如果
函数未矢量化,
ifelse (x == 0,NA, as.Date(x, origin = "1900-01-01"))