0

我在将is.na函数与 zoo 对象一起使用时遇到问题。这是我尝试过的:

z1 <- zoo(matrix(1:8, 4, 2), as.Date("2003-01-01") + 0:3)
z1[2,1]<-NA

所以,z1是...

2003-01-01  1 5
2003-01-02 NA 6
2003-01-03  3 7
2003-01-04  4 8

当我使用乘以一列时,is.na我得到:

!is.na(z1[,1])*z1[,2]

它返回:

2003-01-01 2003-01-02 2003-01-03 2003-01-04 
      TRUE      FALSE       TRUE       TRUE 

但是,当我简单地执行 TRUE*100 时,程序会返回数字:

TRUE*100
[1] 100
FALSE*100
[1] 0

我应该使用什么函数让程序返回数字而不是TRUEs 和FALSEs (我在这里寻找!is.na动物园对象的等效函数)?

4

1 回答 1

2

!的优先级低于*,因此您的第一个示例被解析为

!(is.na(z1[,1]) * z1[,2]) 

请参阅?SyntaxR 中的运算符优先级。

于 2013-06-20T14:05:33.190 回答