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と評価される要素を抽出する