首页 > 解决方案 > R data.table 在 lapply 中使用 if 语句

问题描述

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

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

基本上,如果值为 0,则使用 NA 而不是“1900-01-01”。现在的问题是:

Warning messages:
1: In if (x == 0) { :
  the condition has length > 1 and only the first element will be used

有没有办法解决它?

标签: rif-statementdata.tablelapply

解决方案


在这种情况下使用“ifelse”而不是“if”:

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

推荐阅读