11

値のリストを取得し、magrittr を使用して NA ではない値を見つけようとしています。以下に簡単な例を示します。

data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na

正しい結果が得られます。

      data
[1,] FALSE
[2,] FALSE
[3,]  TRUE
[4,] FALSE
[5,] FALSE
[6,]  TRUE
[7,] FALSE

not 演算子!を の前に置くis.naと、エラーが発生します。

data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% !is.na

私にくれます

Error in FUN(left, right) : operations are possible only for numeric, logical or complex types

多くの試行錯誤の後、私はこれに出くわしました。

 data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na %>% !.

      data
[1,]  TRUE
[2,]  TRUE
[3,] FALSE
[4,]  TRUE
[5,]  TRUE
[6,] FALSE
[7,]  TRUE

私の質問は、これを行う別の方法があるかどうかです。パッケージには他のエイリアス オプションがありますが、それらの例はありません。一つは「ない」です。多分私は代わりにそれを使うべきですか?

質問にある程度答えたことはわかっていますが%>% !.、最後に頼らなくてもこれができるかどうか知りたいです。

4

3 に答える 3

6

バッククォートを使用して、結果を演算子の基になる関数にパイプできます。

> data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na %>% `!`
      data
[1,]  TRUE
[2,]  TRUE
[3,] FALSE
[4,]  TRUE
[5,]  TRUE
[6,] FALSE
[7,]  TRUE

Negateまたは、次の関数を使用します。

> data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% Negate(is.na)()
      data
[1,]  TRUE
[2,]  TRUE
[3,] FALSE
[4,]  TRUE
[5,]  TRUE
[6,] FALSE
[7,]  TRUE
于 2014-08-17T00:29:54.153 に答える
5

否定を「前面」に移動してみませんか。これは、通常、%in%中置演算子を否定する方法です

 !data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na

      data
[1,]  TRUE
[2,]  TRUE
[3,] FALSE
[4,]  TRUE
[5,]  TRUE
[6,] FALSE
[7,]  TRUE
于 2014-08-17T00:58:43.850 に答える
5

あるいは

data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% 
  is.na %>% 
 `n'est pas`
于 2014-11-24T09:49:01.870 に答える