R言語のベクトルやリストの長さを計算する関数とその使い方について解説していきます。
この記事では、関数lengthを用いたベクトルやリストの長さ(要素の数)の計算を見ていきます。
また、ベクトルやリスト以外にもformulaやexpressionに対しての使用例も紹介します。
この記事で扱うRスクリプトは以下からダウンロードできます。
R言語 関数length
関数length
次の関数lengthでRのオブジェクトの要素の数を計算することができます。
ベクトルやリストなどの様々なオブジェクトの要素の数を求めることができます。
データフレームに私用した場合は、列数が計算されることに注意が必要です。
length(x) <- value
上の関数lengthの引数は次の通りです。
x | Rオブジェクト。ベクトルまたはファクター型のオブジェクト。 |
value | 非負のintegerまたはdouble。 |
実行例
関数lengthを用いてベクトルやリストの長さを計算する例を見ていきます。
関数lengthによって次のように、任意のRのオブジェクトの長さを取得することができます。
1 2 3 4 5 6 7 8 9 10 11 12 | > #関数length > a <- 1 > b <- "b" > > len_a <- length(a) > len_b <- length(b) > > len_a [1] 1 > > len_b [1] 1 |
オブジェクトが1つの要素から成るときは1を返します。
また、length(object) <- integerでオブジェクトの長さの変更ができます。
次の例のように長さが5のベクトルとリストの長さを10に変更することが可能です。
元のベクトルの長さより大きい値を指定した場合、NAが末尾に追加されます。リストの場合はNULLの要素が追加されます。
元のオブジェクトの長さより小さい値を指定した場合は、指定した値のインデックス以降の要素がオブジェクトから削除されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | > #長さの変更 > vec <- c(1, 2, 3, 4, 5) > > length(vec) <- 10 > vec [1] 1 2 3 4 5 NA NA NA NA NA > > length(vec) <- 3 > vec [1] 1 2 3 > > lst <- list(1, 2, 3, 4, 5) > > length(lst) <- 10 > lst [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 [[4]] [1] 4 [[5]] [1] 5 [[6]] NULL [[7]] NULL [[8]] NULL [[9]] NULL [[10]] NULL > > length(lst) <- 3 > lst [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 |
ベクトルの長さの取得
オブジェクトがベクトルである場合、ベクトルに含まれる要素の数を返します。
要素の型に関係なくベクトルの長さを求めることができます。
1 2 3 4 5 6 7 8 9 10 11 12 | > #ベクトルの長さ > numbers <- seq_len(10) > len_numbers <- length(numbers) > > alphabets <- letters[seq_len(10)] > len_alphabets <- length(numbers) > > len_numbers [1] 10 > >len_alphabets [1] 10 |
NULLである要素は長さにカウントされないことに注意が必要です。
反対に、NAの要素は要素の長さとしてカウントされます。
1 2 3 4 5 6 7 8 9 10 11 | > nulls <- rep(NULL, 5) > len_nulls <- length(nulls) > > nas <- rep(NA, 5) > len_nas <- length(nas) > > len_nulls [1] 0 > > len_nas [1] 5 |
リストの長さの取得
また、ベクトルだけでなくリストについても要素の長さを計算することができます。
ベクトルと同様に、関数lengthの引数xにリストを渡すことで、リストの長さを取得することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 | > #リストの長さ > lst_num <- list(1, 2, 3, 4, 5) > len_lst_num <- length(lst_num) > > lst_char <- list("a", "b", "c", "d", "e") > len_lst_char <- length(lst_char) > > len_lst_num [1] 5 > > len_lst_char [1] 5 |
リストの場合は、ベクトルの時と違いNULLの要素を含めて要素の数を計算することができます。
NAについても同様に、NAを含むリストの長さを返します。
1 2 3 4 5 6 7 8 9 10 | > lst_null <- list(NULL, NULL, NULL, NULL, NULL) > len_lst_null <- length(lst_null) > lst_na <- list(NA, NA, NA, NA, NA) > len_lst_na <- length(lst_na) > > len_lst_null [1] 5 > > len_lst_na [1] 5 |
データフレームの長さ(列の長さ)の取得
下の実行例に示すように、データフレームに関数lengthを使用した場合は、列の長さが返されます。
データ数を求めたい場合は、関数nrowを使用する必要があります。
1 2 3 4 5 6 | > #データフレーム > dataFrame <- data.frame(numbes = seq_len(10), letters = letters[seq_len(10)]) > len_dataFrame <- length(dataFrame) > > len_dataFrame [1] 2 |
formulaの長さの取得
次にformulaに対する関数lengthの使用例を紹介します。
formulaに関数lengthを適用すると、formulaの~以降の変数の数を求めることができます。
下の例では、yがx^2、x、1の3つの変数のモデルで表されるため、lengthによる要素数は3となります。
1 2 3 4 5 6 7 8 9 10 11 | > #formula > quadraticFun <- y ~ x ^ 2 + x + 1 > len_quadraticFun <- length(quadraticFun) > formula_quadFun <- formula(quadraticFun) > len_formula_quadFun <- length(formula_quadFun) > > len_quadraticFun [1] 3 > > len_formula_quadFun [1] 3 |
expressionの長さの取得
最後にexpressionの長さの取得について見ていきます。
滅多に用いることはないですが、次のようにexpressionに含まれる要素の数を取得することができます。
exprにはx、x^2、x-yという式(expression)が含まれています。
exprにlengthを適用すると、expressionの要素数を求めることができます。
1 2 3 4 5 6 | > #expression > expr <- expression(x, square <- function(x) {x ^ 2}, x - y) > len_expr <- length(expr) > > len_expr [1] 3 |
まとめ
R言語でベクトルやリストの長さを取得する関数を紹介しました。
関数lengthで任意のRのオブジェクトの長さを取得することができます。
ベクトルやリストの長さだけでなく、データフレームの列数やformulaやexpressionの長さを求めることもできます。