r - data.table fifelse 给出错误警告?

标签 r data.table warnings

我使用 data.table 库中的 fifelse 发现了警告差异:

set.seed(123)
df <- data.table(ID = rep(1:10,each = 2),x = sample(c(1,NA),20,replace = T))

test1 <- df[,fifelse(any(!is.na(x)),max(x,na.rm = T),as.numeric(NA)),by = ID]

产生警告:

Warning messages 1: In max(x, na.rm = T) : no non-missing arguments to max; returning -Inf 2: In max(x, na.rm = T) : no non-missing arguments to max; returning -Inf

同时:

test2 <- df[,ifelse(any(!is.na(x)),max(x,na.rm = T),as.numeric(NA)),by = ID]

不要。两个结果是相同的:

identical(test1,test2)
[1] TRUE

结果中没有-Inf。这是什么意思?

最佳答案

使用if/else可能会更好,因为输入的length 1

df[, if(any(!is.na(x))) max(x, na.rm = TRUE) else NA_real_, by = ID]

关于r - data.table fifelse 给出错误警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65833177/

相关文章:

r - 如何使用ggplot生成非标准绘图类型?

r - 牺牲最小分辨率来汇总数据(根据滞后值的总和创建不同大小的组)

r - data.table join 和 j-expression 意外行为

ios - 在Objective-c编程中连续调用 "SetNeedDisplay"方法时收到内存警告

c - "Warning: Linking the shared library against static library is not portable"是什么意思?

html - 网络图中的搜索框

r - 如何在不知道情节的确切坐标的情况下将文本放在情节 (ggplot2) 上?

r - 在 Rmarkdown 中执行 Perl 6 代码

r - 如何为其他列中的一组值创建索引列

c++ - C4512 无法生成赋值运算符