为什么R中的NA ^ 0给出1而不是NA

时间:2017-03-13 12:37:09

标签: r

我刚刚遇到了一个我想要理解的奇怪的R行为。

当我NA^0时,它会给出1而不是NA,就像我预期的那样。

示例:

v1 <- c(2,NA,1)
v1^0
[1] 1 1 1
v1**0
[1] 1 1 1

^**是算术运算符(help("^")),例如-+等,在这种情况下会给出NA:

v1+0
[1]  2 NA  1
v1-0
[1]  2 NA  1

为什么不同的运营商与NAs的表现不同?

1 个答案:

答案 0 :(得分:0)

我投票将其关闭为duplicate,但由于您的问题似乎是“如何避免此行为并返回NA”:

your_exp <- Vectorize(function(base, exp) ifelse(is.na(base),NA,base^exp))
v1 <- c(2,NA,1)

your_exp(v1,0)
# returns [1]  1 NA  1

请参阅accepted answer了解原因NA^0 == 1