2012-06-02 19 views

答えて

44

再現可能な例はありませんが、問題の内容を正確に伝える警告メッセージが表示されます。

membの長さは10です。私はdih_y2の長さを推測しています$ MemberIDは10の倍数ではありません==を使用すると、==を使用すると警告メッセージが表示されますおそらくそれがあなたがやっていることを期待していることをしていないことを知っている。 ==要素ごとに等価性をチェックします。 dih_y2$MemeberIDの要素のどれがベクトルmembにも含まれていれば、あなたがしたいと思っています。これを行うには、%in%演算子を使用します。

dih_col <- which(dih_y2$MemeberID %in% memb) 
16

もしRにおける2つのベクトル間のブール比較を実行するとき、「予想」は、Rが順番に各対応する要素を比較することができるように、両方のベクターは、同じ長さであることです。

Rはrecyclingと呼ばれる非常に愛されている(または嫌われている)機能を持っています。これは、通常、オブジェクトが同じ長さであると予想している何かをしようとすると、両方のオブジェクトを同じ長さにするオブジェクトです。

長いオブジェクトが短いものの倍数である場合、短いオブジェクトを数回繰り返すことになります。多くの場合、Rのプログラマはこれを利用してよりコンパクトに、より少ない型どりで作業を行います。

しかし、それらが倍数でない場合、Rはあなたが間違いを犯した可能性があることを心配し、おそらくその比較を行うことを意味するものではないので、警告です。

次のコードを自分で出来る

> x <- 1:3 
> y <- c(1,2,4) 
> x == y 
[1] TRUE TRUE FALSE 
> y1 <- c(y,y) 
> x == y1 
[1] TRUE TRUE FALSE TRUE TRUE FALSE 
> y2 <- c(y,2) 
> x == y2 
[1] TRUE TRUE FALSE FALSE 
Warning message: 
In x == y2 : 
    longer object length is not a multiple of shorter object length 
関連する問題