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"))