R で大きなデータフレームを作成する

胡金庫 2023年1月30日
  1. R でベクトルと因子を使用してデータフレームを作成する
  2. R でリストを使用してデータフレームを作成する
  3. R でマトリックスを使用してデータフレームを作成する
R で大きなデータフレームを作成する

この記事では、R で大きなデータフレームを作成するいくつかの方法について説明します。

R でベクトルと因子を使用してデータフレームを作成する

データフレームは、R 言語の最も強力な組み込みデータ構造であり、各列の長さが同じで名前が必要な表形式の行列に似ています。ただし、その下には、データフレームの各列がリストデータ構造の要素であるかのように扱われるため、より多くのリストのような機能があります。プラス面として、次のコードスニペットに示すように、ベクトルと因子の組み合わせを使用してデータフレームを構築できます。data.frame 関数を使用して、ベクトルと因子からデータフレームオブジェクトを構築します。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df2 <- data.frame(v1, v2, v3, wday)

出力:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

R でリストを使用してデータフレームを作成する

または、リストオブジェクトを使用してデータフレームオブジェクトを作成することもできます。ただし、このメソッドには、単一のリストオブジェクトをデータフレームに変換する as.data.frame と呼ばれる別の関数が必要です。次の例では、list 関数を使用してリストオブジェクトを作成し、as.data.frame の引数として呼び出すチェーンを作成していることに注意してください。データフレームには列ラベルが必要なため、ユーザーが指定しない場合、通常は自動的に選択されます。変換中に不要な名前が選択された場合は、いつでも colnames 関数を呼び出して、列名のベクトルを割り当てることができます。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df1 <- as.data.frame(list(v1, v2, v3, wday))
colnames(df1) <- c("v1", "v2", "v3", "wday")
df1

出力:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

R でマトリックスを使用してデータフレームを作成する

場合によっては、ベクトルまたはリストで初期化するのが実用的でない巨大なデータフレーム割り当てが必要になります。幸い、matrix 関数は、行/列番号を指定することにより、大きなデータフレームを構築するための簡単で高速な方法を提供します。オプションで、最初の引数として渡されたベクトルを使用して、データフレームの値を初期化できます。それ以外の場合、要素は NA 値になります。

m1 <- matrix(1:1000, ncol = 10, nrow = 100)
df1 <- as.data.frame(m1)
df1

出力:

V1  V2  V3  V4  V5  V6  V7  V8  V9  V10
1     1 101 201 301 401 501 601 701 801  901
2     2 102 202 302 402 502 602 702 802  902
....
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - R Data Frame