R(リスト)

2025年6月19日 (木)

[R]リストに含まれる要素の要素名を得る

names関数を使う。引数に与えたリストに含まれる要素の要素名を、文字列型ベクトルで返す。後半の例のとおり、要素に名前がついていない場合は""が返される。すべての要素に名前がついてない場合はNULLが返される。

> n <- c(19, 30, 45)
> name <- c("アグネスデジタル", "ライスシャワー", "スーパークリーク")
> cv <- c("鈴木みのり", "石見舞菜香", "優木かな")
> lis <- list(n = n, name = name, cv = cv)
> print(lis)
$n
[1] 19 30 45
$name
[1] "アグネスデジタル" "ライスシャワー" "スーパークリーク"
$cv
[1] "鈴木みのり" "石見舞菜香" "優木かな"
> names(lis)
[1] "n" "name" "cv"
> names(list(name, cv = cv))
[1] "" "cv"
> names(list(n, name, cv))
NULL

2025年6月17日 (火)

[R]リストの特定の要素を削除する

リストの要素にNULLを代入すると、NULLが代入されるのではなく、指定した要素が削除される。末尾ではない要素を指定すると、指定した要素がなくなり、その分を前に詰めたリストになる。NULL自体を要素にしたい場合は、list(NULL)を代入する。

> lis <- list("セナディア", "ヘリア", "コラリー")
> print(lis)
[[1]]
[1] "セナディア"
[[2]]
[1] "ヘリア"
[[3]]
[1] "コラリー"
> lis[2] <- NULL
> print(lis)
[[1]]
[1] "セナディア"
[[2]]
[1] "コラリー"
> lis[[1]] <- list(NULL)
> print(lis)
[[1]]
[[1]][[1]]
NULL
[[2]]
[1] "コラリー"

2025年6月16日 (月)

[R]リストに要素を追加する

c関数かappend関数を使う。c関数は引数に指定した順番どおりのリストを作成して返す。append関数はもう少し複雑な条件で追加をすることができる。

> lis <- list("ヘリア")
> print(lis)
[[1]]
[1] "ヘリア"
> lis <- c("セナディア", lis, "コラリー")
> print(lis)
[[1]]
[1] "セナディア"
[[2]]
[1] "ヘリア"
[[3]]
[1] "コラリー"
> lis <- list("セナディア", "コラリー")
> lis <- append(lis, "セリア", after = 1)
> print(lis)
[[1]]
[1] "セナディア"
[[2]]
[1] "セリア"
[[3]]
[1] "コラリー"

2025年6月 1日 (日)

[R]リストとは

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

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"

2024年12月12日 (木)

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

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

> 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] "瀬戸麻沙美" "鈴木みのり"

2024年12月11日 (水)

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

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] "瀬戸麻沙美" "鈴木みのり"

2024年12月10日 (火)

[R]リストを連結する

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] "スノウブレイク"

2024年4月23日 (火)

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

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" "魔女の旅々"

2024年4月20日 (土)

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

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

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

2024年2月20日 (火)

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

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]], ...) でエラー: 添え字が許される範囲外です
無料ブログはココログ

■■

■■■