atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
R入門
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
R入門
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
R入門
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • R入門
  • リスト

R入門

リスト

最終更新:2025年06月13日 21:10

r-intro

- view
管理者のみ編集可

目次

  • 目次
  • リストとは
  • リストを作成する
  • リストの宣言と初期化
  • リストから要素を取り出す
  • リストの要素数を調べる
  • リストに要素を追加する
  • 要素に名前を付けてリストを作成する
  • リストの要素に後から名前を付ける
  • リストをベクトルに変換する
  • リストの要素を逆順に並び替える
  • リストの各要素に一括で関数を適用する
  • リストから要素を取り出す
  • リストの要素を削除する
  • リストの各要素からインデックスを指定してまとめて値を抜き出す
  • リストを連結する
  • リストに名前を付けた要素を追加する
  • 特殊な文字が含まれる名前を付けた要素からなるリストを作成する

リストとは

リストとは、異なる種類のオブジェクトを一つにまとめたオブジェクトのこと。ベクトルは同じ種類の情報しか一まとめにできないが、リストは、数値、文字列、ベクトル、データフレームなど種類を問わず一まとめにすることができる。含めるベクトルは種類が異なっていてもかまわず、リスト自身も含めることもできる。要素数も揃える必要はない。

list関数の引数に与えたると、それらが一つずつ要素となり一つのリストになる。

> c(1, 2, 3)
[1] 1 2 3
> c(1, 2, "a")
[1] "1" "2" "a"
> n <- 1:3
> name <- c("セナディア", "ヘリア", "コラリー")
> cv <- c("鈴木みのり", "近藤唯", "会沢紗弥")
> dt <- as.Date("2012-03-03") + 1:2
> lis <- list(n, name, cv, "崩壊3rd", dt)
> print(lis)
[[1]]
[1] 1 2 3
[[2]]
[1] "セナディア" "ヘリア"     "コラリー"  
[[3]]
[1] "鈴木みのり" "近藤唯"     "会沢紗弥"  
[[4]]
[1] "崩壊3rd"
[[5]]
[1] "2012-03-04" "2012-03-05"
> typeof(lis)
[1] "list"

リストを作成する

list関数を使う。引数に要素とするオブジェクトを指定する。含める要素にリストを指定することもできる。

> n <- 1:3
> name <- c("セナディア", "ヘリア", "コラリー")
> cv <- c("鈴木みのり", "近藤唯", "会沢紗弥")
> dt <- as.Date("2012-03-03") + 1:2
> lis <- list(n, name, cv, "崩壊3rd", dt)
> print(lis)
[[1]]
[1] 1 2 3
[[2]]
[1] "セナディア" "ヘリア"     "コラリー"  
[[3]]
[1] "鈴木みのり" "近藤唯"     "会沢紗弥"  
[[4]]
[1] "崩壊3rd"
[[5]]
[1] "2012-03-04" "2012-03-05"
> lis <- list("鈴木みのり", list("近藤唯", "会沢沙弥"))
> print(lis)
[[1]]
[1] "鈴木みのり"
[[2]]
[[2]][[1]]
[1] "近藤唯"
[[2]][[2]]
[1] "会沢沙弥"

リストの宣言と初期化

list関数を使う。

> n <- 1:3
> s <- c("A", "B", "C")
> lst <- list(n, s)
> print(lst)
[[1]]
[1] 1 2 3
[[2]]
[1] "A" "B" "C"

リストから要素を取り出す

[ ]演算子と[[ ]]演算子を使う。それぞれインデックスを与える。[ ]演算子は要素をリストで、[[ ]]演算子は要素をベクトルで返す。

> n <- 1:3
> s <- c("A", "B", "C")
> lst <- list(n, s)
> lst[2]
[[1]]
[1] "A" "B" "C"
> lst[[2]]
[1] "A" "B" "C"

リストの要素数を調べる

length関数を使う。

> n <- 1:10
> s <- c("A", "B", "C")
> lst <- list(n, s)
> print(lst)
[[1]]
[1]  1  2  3  4  5  6  7  8  9 10
[[2]]
[1] "A" "B" "C"
> length(lst)
[1] 2

リストに要素を追加する

append関数を使う。デフォルトでは最後に追加する。特定の要素の後に追加したい場合は、afterオプションに挿入前のインデックスを指定する。

> n <- 1:3
> s <- c("A", "B", "C")
> d <- c(1.1, 2.2, 3.3)
> lst0 <- list(n, s)
> print(lst0)
[[1]]
[1] 1 2 3
[[2]]
[1] "A" "B" "C"
> lst1 <- append(lst0, list(d))
> print(lst1)
[[1]]
[1] 1 2 3
[[2]]
[1] "A" "B" "C"
[[3]]
[1] 1.1 2.2 3.3
> lst2 <- append(lst0, list(d), after = 1)
> print(lst2)
[[1]]
[1] 1 2 3
[[2]]
[1] 1.1 2.2 3.3
[[3]]
[1] "A" "B" "C"

要素に名前を付けてリストを作成する

list関数で=演算子を使い、名前を指定すればよい。3つ目の要素のとおりに、指定をしなければ名前はつかない。

> s1 <- c("セナディア", "イレイナ")
> s2 <- c("鈴木みのり", "本渡楓")
> s3 <- c("崩壊3rd", "魔女の旅々")
> lst <- list(chara = s1, `声優` = s2, s3)
> print(lst)
$chara
[1] "セナディア" "イレイナ"  
$声優
[1] "鈴木みのり" "本渡楓"    
[[3]]
[1] "崩壊3rd"    "魔女の旅々"

リストの要素に後から名前を付ける

names関数を使う。この関数は特定の要素だけに名前を付けることはできず、全要素一括でなければできないことに注意。名前を付けたくない要素には””を指定する。

> s1 <- c("セナディア", "イレイナ")
> s2 <- c("鈴木みのり", "本渡楓")
> s3 <- c("崩壊3rd", "魔女の旅々")
> lst <- list(s1, s2, s3)
> lst
[[1]]
[1] "セナディア" "イレイナ"  
[[2]]
[1] "鈴木みのり" "本渡楓"    
[[3]]
[1] "崩壊3rd"    "魔女の旅々"
> names(lst) <- c("名前", "声優", "作品")
> lst
$名前
[1] "セナディア" "イレイナ"  
$声優
[1] "鈴木みのり" "本渡楓"    
$作品
[1] "崩壊3rd"    "魔女の旅々"
> names(lst) <- c("名前", "", "作品")
> lst
$名前
[1] "セナディア" "イレイナ"  
[[2]]
[1] "鈴木みのり" "本渡楓"    
$作品
[1] "崩壊3rd"    "魔女の旅々"

リストをベクトルに変換する

unlist関数を使う。オブジェクトの型が異なる場合は、一つに揃えられるので注意。以下の例では、数値型が文字列型に強制変換されて、ベクトル化されている。

> lst <- list(1:3, c("A", "B", "C"))
> print(lst)
[[1]]
[1] 1 2 3
[[2]]
[1] "A" "B" "C"
> unlist(lst)
[1] "1" "2" "3" "A" "B" "C"

リストの要素を逆順に並び替える

rev関数を使う。

> n <- 1:3
> s <- c("A", "B", "C")
> d <- c(2.4, 6.8)
> lst <- list(n, s, d)
> print(lst)
[[1]]
[1] 1 2 3
[[2]]
[1] "A" "B" "C"
[[3]]
[1] 2.4 6.8
> print(rev(lst))
[[1]]
[1] 2.4 6.8
[[2]]
[1] "A" "B" "C"
[[3]]
[1] 1 2 3

リストの各要素に一括で関数を適用する

lapply関数かsapply関数を使う。この2つの関数の処理は同じで、戻り値が前者はリスト、後者はベクトル(各要素の戻り値が複数になる場合はリスト)と異なるだけ。以下は、3つの英文を空白で分割し、3つの文の分割した各要素数とそれらの要素(文字列)の長さを調べた例。

> s <- character(3)
> s[1] <- "Iwami Manaka played the part of Rice Shower."
> s[2] <- "She's very good in the part."
> s[3] <- "She's a brilliant actress."
> words <- strsplit(s, "\\s+")
> print(words)
[[1]]
[1] "Iwami"   "Manaka"  "played"  "the"     "part"    "of"      "Rice"    "Shower."
[[2]]
[1] "She's" "very"  "good"  "in"    "the"   "part."
[[3]]
[1] "She's"     "a"         "brilliant" "actress." 
> lapply(words, length)
[[1]]
[1] 8
[[2]]
[1] 6
[[3]]
[1] 4
> sapply(words, length)
[1] 8 6 4
> lapply(words, nchar)
[[1]]
[1] 5 6 6 3 4 2 4 7
[[2]]
[1] 5 4 4 2 3 5
[[3]]
[1] 5 1 9 8
> sapply(words, nchar)
[[1]]
[1] 5 6 6 3 4 2 4 7
[[2]]
[1] 5 4 4 2 3 5
[[3]]
[1] 5 1 9 8

リストから要素を取り出す

[ ]演算子と[[ ]]演算子を使いそれぞれインデックスを与えると要素を取り出すことができる。戻り値は[ ]演算子はリスト、[[ ]]演算子はベクトルになる。

> chara <- c("ライスシャワー", "メイショウドトウ", "フィー", "黒川あかね")
> sakuhin <- c("ウマ娘", "ライザのアトリエ2", "推しの子")
> seiyu <- c("石見舞菜香", "和多田美咲")
> lis <- list(chara, sakuhin, seiyu)
> print(lis)
[[1]]
[1] "ライスシャワー"   "メイショウドトウ" "フィー"          
[4] "黒川あかね"      
[[2]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
[[3]]
[1] "石見舞菜香" "和多田美咲"

[ ]演算子は指定の要素を単純にリストで返す。複数のインデックスで指定することも可能。

> lis[2]
[[1]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
> lis[2:3]
[[1]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
[[2]]
[1] "石見舞菜香" "和多田美咲"

[[ ]]演算子は指定の要素をベクトルで返す。複数のインデックスで指定することはできず、以下の例のとおりc(○,×)と指定すると、要素がベクトルであれば、リストの○番目の要素の、その要素の×番目のベクトルの要素を返す。

> lis[[2]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
> lis[[c(2, 1)]]
[1] "ウマ娘"
> lis[[c(3, 2)]]
[1] "和多田美咲"

リストの複数の要素をベクトルでまとめて返したい場合は、unlist関数を利用する。

> unlist(lis[2:3])
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
[4] "石見舞菜香"        "和多田美咲"

リストの要素を削除する

削除したい要素にNULLを代入する。以下の例のとおり、ベクトルと異なりリストの要素にNULLを代入すると、その要素は消去され順番が詰まり、リストの要素数が一つ減る。

> chara <- c("ライスシャワー", "メイショウドトウ", "フィー", "黒川あかね")
> sakuhin <- c("ウマ娘", "ライザのアトリエ2", "推しの子")
> seiyu <- c("石見舞菜香", "和多田美咲")
> lis <- list(chara, sakuhin, seiyu)
> print(lis)
[[1]]
[1] "ライスシャワー"   "メイショウドトウ" "フィー"          
[4] "黒川あかね"      
[[2]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
[[3]]
[1] "石見舞菜香" "和多田美咲"
> lis[2] <- NULL
> print(lis)
[[1]]
[1] "ライスシャワー"   "メイショウドトウ" "フィー"          
[4] "黒川あかね"      
[[2]]
[1] "石見舞菜香" "和多田美咲"

リストの各要素からインデックスを指定してまとめて値を抜き出す

sapply関数に「[[」を指定して使う。以下は、要素がすべてベクトルのリストについて、各要素の1~3番目の要素を抜き出した例。3番目の要素は要素が二つしかないため、3番目の要素を抜き出そうとするとエラーが発生する。lapply関数を使えば、戻り値はリストになる。参考に、最初にリストの各要素の要素数を得ている。

> chara <- c("ライスシャワー", "メイショウドトウ", "フィー", "黒川あかね")
> sakuhin <- c("ウマ娘", "ライザのアトリエ2", "推しの子")
> seiyu <- c("石見舞菜香", "和多田美咲")
> lis <- list(chara, sakuhin, seiyu)
> print(lis)
[[1]]
[1] "ライスシャワー"   "メイショウドトウ" "フィー"           "黒川あかね"      
[[2]]
[1] "ウマ娘"            "ライザのアトリエ2" "推しの子"         
[[3]]
[1] "石見舞菜香" "和多田美咲"
> sapply(lis, length)
[1] 4 3 2
> sapply(lis, "[[", 1)
[1] "ライスシャワー" "ウマ娘"         "石見舞菜香"    
> sapply(lis, "[[", 2)
[1] "メイショウドトウ"  "ライザのアトリエ2" "和多田美咲"       
> sapply(lis, "[[", 3)
 FUN(X[[i]], ...) でエラー:  添え字が許される範囲外です 
> lapply(lis, "[[", 1)
[[1]]
[1] "ライスシャワー"
[[2]]
[1] "ウマ娘"
[[3]]
[1] "石見舞菜香"
> lapply(lis, "[[", 2)
[[1]]
[1] "メイショウドトウ"
[[2]]
[1] "ライザのアトリエ2"
[[3]]
[1] "和多田美咲"
> lapply(lis, "[[", 3)
 FUN(X[[i]], ...) でエラー:  添え字が許される範囲外です

リストを連結する

c関数を使う。

> lis1 <- list(1:2, c("リフ", "瀬戸麻沙美"))
> lis2 <- list(3:5, "スノウブレイク")
> lis1
[[1]]
[1] 1 2
[[2]]
[1] "リフ"       "瀬戸麻沙美"
> lis2
[[1]]
[1] 3 4 5
[[2]]
[1] "スノウブレイク"
> lis <- c(lis1, lis2)
> lis
[[1]]
[1] 1 2
[[2]]
[1] "リフ"       "瀬戸麻沙美"
[[3]]
[1] 3 4 5
[[4]]
[1] "スノウブレイク"

リストに名前を付けた要素を追加する

list関数とc関数を組み合わせて使う。

> no <- 1:2
> name <- c("リフ", "セナディア")
> seiyu <- c("瀬戸麻沙美", "鈴木みのり")
> lis <- list(no, name)
> print(lis)
[[1]]
[1] 1 2
[[2]]
[1] "リフ"       "セナディア"
> lis <- c(lis, list(seiyu = seiyu))
> print(lis)
[[1]]
[1] 1 2
[[2]]
[1] "リフ"       "セナディア"
$seiyu
[1] "瀬戸麻沙美" "鈴木みのり"
> lis <- c(lis, list(`声優` = seiyu))
> print(lis)
[[1]]
[1] 1 2
[[2]]
[1] "リフ"       "セナディア"
$seiyu
[1] "瀬戸麻沙美" "鈴木みのり"
$声優
[1] "瀬戸麻沙美" "鈴木みのり"

特殊な文字が含まれる名前を付けた要素からなるリストを作成する

要素名を指定する際、通常の単語はそのまま指定すればよいが、例えば空白を含むような特殊な文字を含む場合は、指定する要素名を「‘」(バックティック)で囲む必要があるので注意。

> name <- c("リフ", "セナディア")
> seiyu <- c("瀬戸麻沙美", "鈴木みのり")
> lis <- list(name = name, @seiyu = seiyu)
エラー: 予想外の '@' です ( "lis <- list(name = name, @" の)
> lis <- list(name = name, 声 優 = seiyu)
エラー: 想定外のシンボルです ( "lis <- list(name = name, 声 優" の)
> lis <- list(name = name, `@seiyu` = seiyu, `声 優` = seiyu)
> print(lis)
$name
[1] "リフ"       "セナディア"
$`@seiyu`
[1] "瀬戸麻沙美" "鈴木みのり"
$`声 優`
[1] "瀬戸麻沙美" "鈴木みのり"
「リスト」をウィキ内検索
LINE
シェア
Tweet
R入門
記事メニュー

メニュー

  • トップページ
  • Rとは
  • Rを使ってみる
  • 画面出力と入力
  • 変数とオブジェクト
  • ベクトル
  • 演算子と制御構文
  • 数と式
  • 文字と文字列
  • 正規表現
  • 日付と時刻
  • データフレーム
  • tidyverse
  • リスト
  • ファイルの入出力
  • ファイル・ディレクトリ
  • 実行とデバッグ
  • 数学
  • 行列
  • 関数
  • 統計学
  • 統計解析
  • 数値計算
  • 応用
  • 時系列解析
  • 地理空間情報
  • Rの操作
  • データベース
  • パッケージ

  • 環境
  • インターネット
  • 作図
  • 画像

  • 本の計算を再現
  • セイバーメトリクス
  • その他


ここを編集
記事メニュー2

更新履歴

取得中です。

ここを編集
人気記事ランキング
  1. ファイル・ディレクトリ
  2. 入門 統計解析 [医学・自然科学編](東京図書)
もっと見る
最近更新されたページ
  • 1日前

    リスト
  • 19日前

    行列
  • 22日前

    tidyverse
  • 60日前

    インターネット
  • 71日前

    日付と時刻
  • 71日前

    応用
  • 71日前

    文字と文字列
  • 88日前

    変数とオブジェクト
  • 131日前

    その他
  • 132日前

    画像
もっと見る
人気記事ランキング
  1. ファイル・ディレクトリ
  2. 入門 統計解析 [医学・自然科学編](東京図書)
もっと見る
最近更新されたページ
  • 1日前

    リスト
  • 19日前

    行列
  • 22日前

    tidyverse
  • 60日前

    インターネット
  • 71日前

    日付と時刻
  • 71日前

    応用
  • 71日前

    文字と文字列
  • 88日前

    変数とオブジェクト
  • 131日前

    その他
  • 132日前

    画像
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. GTA5 MADTOWN(β)まとめウィキ
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. SYNDUALITY Echo of Ada 攻略 ウィキ
  6. ガンダムGQuuuuuuX 乃木坂46部@wiki
  7. ドタバタ王子くん攻略サイト
  8. 星飼いの詩@ ウィキ
  9. パズル&コンクエスト(Puzzles&Conquest)攻略Wiki
  10. ありふれた職業で世界最強 リベリオンソウル @ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  6. 発車メロディーwiki
  7. MadTown GTA (Beta) まとめウィキ
  8. 検索してはいけない言葉 @ ウィキ
  9. オレカバトル アプリ版 @ ウィキ
  10. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. anbrella(餡ブレラ) - ストグラ まとめ @ウィキ
  2. アルフォート ウェスカー - ストグラ まとめ @ウィキ
  3. 参加者一覧 - ストグラ まとめ @ウィキ
  4. 栖家幡 華憐 - ストグラ まとめ @ウィキ
  5. キャプテン わきを - ストグラ まとめ @ウィキ
  6. アーモンド サラザール - ストグラ まとめ @ウィキ
  7. ギャング - ストグラ まとめ @ウィキ
  8. 敵情報_第2章 - モンスター烈伝オレカバトル2@wiki
  9. オザワ ハヤマサ - ストグラ まとめ @ウィキ
  10. 刃牙 りえる - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.