r - 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
有没有办法解决它?
解决方案
在这种情况下使用“ifelse”而不是“if”:
ifelse (x == 0,NA, as.Date(x, origin = "1900-01-01"))
推荐阅读
- angular - 如何使 JS 函数等待组件以角度加载
- javascript - useState 不更新祖父母状态 - 数据成功地从孙子传递给子,但没有进一步
- drupal - 安装最新的 DKAN 版本时遇到问题?
- spring-boot - 如果我在 java 中使用范围 openid,如何在谷歌身份验证后提取 ID 令牌?
- php - 如何在 League Reader 中跳过重复的(按标题)CSV 列?
- filestream - 允许用户输入信息并发送到文件
- c - 定义一个大小不计空字符的 char 数组
- java - 来自 postgres r2db 的响应花费大量时间导致连接超时
- javascript - 用对象从数组中取出特定值
- numpy - 将模型输出替换为二进制形式