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

compact()の概要

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

compact()の使い方


compact(.x, .p = identity)

compact()の引数

.x

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

.p = identity

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

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

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

準備

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


library(tidyverse)

compact()の使用例

リストから空ベクトルまたは空リストと評価される要素を削除する

次は、要素x1に1から10までの数値、要素x2に空ベクトル、要素x3に空リストが格納されているリストxに対して、空ベクトルと空リストの要素を削除するコードです。


x <- list(
    x1 = 1:10,
    x2 = c(),
    x3 = list()
  )
compact(x)

$x1
 [1]  1  2  3  4  5  6  7  8  9 10
R×purrr::compact リストから空ベクトルまたは空リストと評価される要素を削除する