【发布时间】:2013-09-27 05:28:13
【问题描述】:
在 R 中,我使用 Min 和 Max 来查找给定向量的最小值和最大值。
这个向量是计算和过滤的结果,通常可能是 NULL 或空列表。
在这种情况下,我们会收到如下警告:
警告信息:在 max(el) 中:max 没有非缺失参数; 返回 -Inf
如果您在一个循环(或层)内为多个输入执行此操作,您将开始遇到大量警告
Inf 的默认值不适合我的目的,而是希望返回 0 或其他一些值。
现在,除了每次在 if..else 条件下检查输入是否有效之外,还有什么方法可以在输入为空的情况下为这些 Min、Max 方法规定默认返回值。
- 例如,如果您使用 na.rm=TRUE,那么如果在删除 NA 后输入变为空,则很难预先检查输入。
- 另一种情况是 min(which())。首先检查 which() 的返回值,然后有条件地提供给 min() 并不是我真正想要的。
此外,对 Min、Max 结果进行后处理以手动删除/替换 Inf 为我自己的值并不是真正有效的方法。
那么,有没有什么有效的方法让 R 从 Min、Max 中返回我自己的自定义默认值(对于空向量,而不是 +Inf 和 -Inf ??
使用 if..else 检查的预处理和使用 Inf 替换的后处理并不那么优雅。
如果围绕 Min 编写自定义包装器,Max 是唯一的方法,您建议如何在不影响速度或优雅的情况下编写它?
【问题讨论】:
-
R 区分大小写。如果要引用函数,请确保不要将小写字母更改为大写字母。
-
您真的要指定任意自定义值,还是只禁止 +Inf/-Inf/NaN?在所有情况下,NA 似乎都是一个完美的抑制值。
标签: r