私は R を初めて使用し、空のエントリを持つベクトルを使用していますが、grep が私のデータに対して直感に反する動作をすることに気付きました。説明する方法が 100% わからないので、例を使用して作業します。3 つのベクトルがあるとします。
A<-c("","","","","","","a")
B<-c(NA,NA,NA,NA,NA,NA,"a")
A
データが最初に保存された方法であり、B
Rがデータを読み取っている方法です。> vec[grep("",vec, invert=TRUE)]
私の理解では、実行するvec
と、すべての空のセルが検索され、それらのインデックスが返され、空でないデータ エントリを含む結果ベクトルが入力されて表示されます。ただし、これを実行するvec=A
と、次のvec=B
ようになります。
vec = A:
> A[grep("",A, invert=FALSE)]
[1] "" "" "" "" "" "" "" "a"
> A[grep("",A, invert=TRUE)]
character(0)
vec = B:
> B[grep("",B, invert=FALSE)]
[1] "a"
> B[grep("",B, invert=TRUE)]
[1] NA NA NA NA NA NA
私のデータはケースのように読み取られていると思っていたので、BI は直感に反する結果に困惑しました。これは単に変数タイプの問題である可能性があることは理解していますが、何が起こっているのかについて誰かが状況をさらに明らかにできるかどうか疑問に思っていました.
簡易編集ケース A は理にかなっています。変数の型がオフになっているため、grep は "" を見つけることができないため、すべてを返します。反転すると、「何もない」のデフォルトとして character(0) が返されます。ケースBでまだ混乱しています。