Rのリストの全要素をforループで出力する方法
Rでは、ベクトルに対して使うforループと、リストに対して使うforループに本質的な違いはなく、通常どおりの構文でそのまま利用できます。たとえば、Listという名前のリストのすべての要素を表示したい場合は、for(i in List){print(i)}と書くだけです。ここで変数iは、ループが1周するごとにList内の各ベクトルを順番に参照します。
サンプルリストの作成
まず、さまざまな種類のベクトルを含むリストを作成します。文字ベクトル、正規分布・ポアソン分布・一様分布・指数分布に従う乱数、丸めた整数値、そして1から100までの連続数列を要素として持たせています。
List <- list(A = LETTERS[1:26],
B = rnorm(50, 2, 1),
C = rpois(100, 5),
D = runif(50, 2, 3),
E = rexp(50, 3),
F = round(runif(50, 1, 5), 0),
G = 1:100)
List
実行結果
$A [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" [20] "T" "U" "V" "W" "X" "Y" "Z" $B [1] 2.00587546 2.51976609 3.00092888 -0.09322055 1.28160375 2.51372850 [7] 1.85064902 0.94698668 1.80576447 3.48364091 -0.10322959 0.47136545 (中略) $C [1] 4 4 4 6 2 4 2 5 6 5 2 2 4 7 3 7 5 4 8 3 13 7 6 9 3 (中略) $D [1] 2.637729 2.178234 2.080350 2.644874 2.311054 2.341333 2.258483 2.563977 (中略) $E [1] 0.08559215 0.06408238 0.33736840 0.15217964 0.33952192 0.66868500 (中略) $F [1] 4 2 5 4 3 2 3 1 4 3 4 2 4 2 5 4 3 2 3 4 5 5 2 3 3 4 4 3 2 3 4 5 2 3 3 1 2 3 [39] 4 3 3 4 2 2 2 2 4 4 3 4 $G [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (中略) [91] 91 92 93 94 95 96 97 98 99 100
forループですべての要素を出力する
続いて、forループを作成し、リストのすべての要素を順番に出力します。
for(i in List){
print(i)
}
実行結果
このコードを実行すると、リストの各要素(各ベクトル)が要素名なしで、格納されている順に1つずつコンソールへ出力されます。
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" [20] "T" "U" "V" "W" "X" "Y" "Z" [1] 1.93632043 3.44600787 -0.37548663 0.02820313 1.53779313 2.29151897 (中略) [1] 3 6 4 6 4 8 4 4 3 2 5 4 4 9 12 6 3 9 5 3 7 2 1 5 2 (中略) [1] 2.579936 2.108718 2.543215 2.724927 2.241931 2.664744 2.361368 2.821100 (中略) [1] 1.008710228 0.017209109 0.685317405 0.096104104 0.039369900 0.008391454 (中略) [1] 3 1 3 5 2 1 2 2 1 3 3 4 2 4 3 5 1 3 5 1 2 1 4 3 3 4 3 4 4 4 3 2 1 3 4 4 4 2 [39] 4 4 5 5 4 4 4 3 1 2 4 3 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (中略) [91] 91 92 93 94 95 96 97 98 99 100
応用:インデックスや要素名を使う方法
for(i in List)と書くと、iには各要素の「中身」が直接代入されます。要素名や位置情報も必要な場合は、seq_along()やnames()を組み合わせると便利です。
# インデックスでアクセスする場合
for(i in seq_along(List)){
print(List[[i]])
}
# 要素名と一緒に表示する場合
for(name in names(List)){
cat("要素名:", name, "\n")
print(List[[name]])
}
このように、Rのforループはリストに対してもベクトルと同じ感覚で使えます。リストの各要素を順に処理したいときは、まずシンプルなfor(i in List)の形を試し、必要に応じてseq_along()やnames()を活用するとよいでしょう。
-
【Android】ListViewでLinkedList(リンクリスト)の全要素を一括削除する方法
はじめに この記事では、AndroidアプリにおいてLinkedList(リンクリスト)に格納されたすべての要素を一括削除し、その結果をListViewの表示に反映させる方法を解説します。サンプルコード付きなので、Androidアプリ開発の初心者の方でもすぐに試せる内容となっています。 ステップ1:新規プロジェクトの作成 まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して、必要な項目を入力しながら新しいプロジェクトを作成してください。 ステップ2:レイアウトファイル(activity_main.xml)の編集 次に、res/layou
-
Matplotlib PyplotでフィギュアのAxes(軸)リストを取得する方法
MatplotlibのPyplotを使ってフィギュアに含まれるAxes(軸)のリストを取得するには、まずフィギュアを作成し、その後get_axes()メソッドを呼び出すことで、フィギュア内のすべてのAxesオブジェクトを取得できます。取得したAxesに対して、ラベルの設定などの操作を行うことが可能です。手順NumPyを使ってデータ点 xs と ys を作成し、figure()メソッドで新しいフィギュア(または既存のフィギュア)を生成します。add_subplot()メソッドを使用して、サブプロット配置の一部としてフィギュアにAxesオブジェクトを追加します。ここでは nrows=1、ncols