R言語で、リストまたはベクトルからFALSEと評価される要素を抽出する方法について解説します。ここではtidyverseパッケージに含まれているpurrrパッケージのdiscard()を使用した方法についてお伝えします。

discard()の概要

discard()は、リストまたはベクトルからFALSEと評価される要素を抽出するための関数です。

discard()の使い方


discard(.x, .p, ...)

discard()の引数

.x

リストまたはベクトルを指定します。

.p

述語関数 (つまり、TRUEまたはFALSEを返す関数) は、次のいずれかの方法で指定します。

  • 名前付き関数(例: is.character)。
  • 匿名関数 (例: ⁠\(x) all(x < 0)⁠ または function(x) all(x < 0)。
  • 数式 (例: ~ all(.x < 0)。最初の引数を参照するには、.x を使用する必要があります)。R の古いバージョンとの下位互換性が必要な場合にのみ推奨されます。

.p に渡される追加の引数を指定します。

準備

あらかじめ、tidyverseパッケージを読み込んでおきます。


library(tidyverse)

discard()の使用例

リストからFALSEと評価される要素を抽出する

次は、要素x1に1から10までの数値、要素x2に1から5までの数値、要素x3に5から10までの数値が格納されているリストxに対して、各要素の平均値が5より大きくない要素を抽出するコードです。


x <- list( x1 = 1:10, x2 = 1:5, x3 = 5:10 ) discard(x, ~ mean(.x) > 5)

$x2
[1] 1 2 3 4 5

ベクトルからFALSEと評価される要素を抽出する

次は、1から10までの数値ベクトルに対して、偶数でない数値を抽出するコードです。


x <- 1:10
discard(x, ~ .x %% 2 == 0)

[1] 1 3 5 7 9
R×purrr::discard リストまたはベクトルからFALSEと評価される要素を抽出する