【发布时间】:2012-11-15 22:00:14
【问题描述】:
我从 SAS 来到 R,其中数字缺失设置为无穷大。所以我们只能说:
positiveA = A > 0;
在 R 中,我必须像这样冗长:
positiveA <- ifelse(is.na(A),0, ifelse(A > 0, 1, 0))
我发现这种语法很难阅读。无论如何我可以修改 ifelse 函数以将 NA 视为对于所有比较条件始终为假的特殊值?如果没有,将 NA 视为 -Inf 也可以。
同样,在字符变量的 ifelse 语句中将 NA 设置为 ''(空白)。
谢谢。
【问题讨论】:
-
正如大家已经说过的:不要将 NA 替换为逻辑值或数值。许多 R 函数都有一个“na.rm=TRUE/FALSE”或类似的参数,以允许您适当地处理您的数据。如果 SAS 真的将事物设置为 Inf,则它们违反了基本的计算机数学规则(更不用说 Inf 是数学表达式的允许结果,如 NaN (= 0/0 ,例如));而 NA 意味着完全不同的东西。一旦你习惯了 R 的哲学,你会更愿意让 NA 保持 NA。