我刚刚遇到了一个我想要理解的奇怪的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的表现不同?
答案 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
。