亡八の覚書

環境分野の化学分析屋(見習い)が、独学でたどる解析の冥府魔道

R:検索結果がヒットしないのに、NAとか0にはならないとき

Rでのちょっと戸惑ったこと。

 

データからsubset()で検索値をとりだして

その値を使ってさらに足し算したいとき。

検索結果がヒットしなかったら

0を返してほしかったのだけど

そうじゃなくてlogical(0)なんて出てきて

これが煮ても焼いても食えなかった。

 

is.na()をやってもだめで

この数字自体に1をかけたり、1を割ったりして

何かエラーにしようとしても

numeric(0)とか出て、うまく扱えない。

 

で、length()で大きさを見ると、見事に数字の0に落ち着いた。

 

d <- subset(data, lon == basedata$lon[ i ] & lat == basedata$lat[ i ]

d2 <- subset(data, lon == basedata$lon[ j ] & lat == basedata$lat[ j ]

で、このdに該当する数字が見つからなかったときに

(d2はヒットして5だったとすると)

d + d2 とかしたい場合

そのままだと計算できないけど

length(d) + d2 だと、5が返される。

 

もっとも、dに数字がヒットした時に困るから

その前にifとかでちゃんと仕分けしておかないといけないけど。

 

強引かもしれないけど、なんとか解決。