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

keep()の概要

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

keep()の使い方


keep(.x, .p, ...)

keep()の引数

.x

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

.p

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

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

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

準備

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


library(tidyverse)

keep()の使用例

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

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


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

$x1
 [1]  1  2  3  4  5  6  7  8  9 10

$x3
[1]  5  6  7  8  9 10

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

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


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

[1]  2  4  6  8 10
R×purrr::keep リストまたはベクトルからTRUEと評価される要素を抽出する