ベクトル処理言語とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ベクトル処理言語の意味・解説 

ベクトル処理言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/03 23:39 UTC 版)

R言語」の記事における「ベクトル処理言語」の解説

R言語は、「ベクトル処理」と呼ばれる実行機構により、柔軟な処理を簡便な記法で実現している。 R言語で言う「ベクトル」とは数学的用語のベクトルとはやや異なり構造持ったデータ集合」という「リスト」に近い意味を持つ。すなわち、実数複素数からなる数学上ベクトルや行列はもちろん、配列・リスト・テーブル(データフレーム)・集合時系列などといった複雑な構造持ったデータも、特に宣言することなく変数入れることができる。ベクトル要素がさらにテーブル時系列配列などであるといった「入れ子構造であってもよい。このおかげで複雑なデータ構造他愛もなく構築管理できる予約語としてRに組込まれ演算も、関数も、ベクトルを扱うことができる。ユーザー定義関数ベクトル対応にするための関数もある。こうしたRの演算子やRの関数は、ベクトルの全要素に順に作用した調べるといった構造にできている。そのおかげでプログラム全体制御構造単純化して意味が明瞭になるリストをうまく使うことによって、通常他の言語複数要素処理する時の目的とする計算本質かけ離れたアルゴリズム」(たとえば、カウンター使ったループ条件分岐等)の作成負担から解放される。(他のプログラミング言語似た記法を探すとすれば、たとえばLisp言語のmapcar関数Perl言語map関数など。) 例として、円周率モンテカルロ法近似する計算挙げる。 s <- 100000x <- runif(s)y <- runif(s)sum(x^2 + y^2 <= 1) * 4 / s ここで『 <- 』は代入(この場合『 = 』とも書けるが推奨はされていない)、『 runif(a) 』は一様乱数を a 個作りベクトル返す関数、『 a^2 』は a の二乗、『 sum( a <= b) 』は引数ベクトル要素数を返す関数、を意味する。この場合sum関数引数TRUEまたはFALSEリストからなる論理値ベクトルである。ベクトルaおよびbの対応要素同士比較演算子比較した結果並んでいるので、真であった個数が返る。 上の例で、sum関数によって、条件分け計算複数行なう指示暗黙のうちになされていることに注目されたい。すなわち、0から1の値をとる一様乱数xとyの組からなるサンプル十万作りそのうち半径1の円内に入ったサンプル何個かを数える。」という計算本質を、forループのような繰返し処理の記述を必要とせず、簡潔に表現できている。 代入『 <- 』は「付値」と呼ばれる関数でもあり、以下のように一行書き換えても意味は同じとなる。 sum(runif(s <- 100000)^2 + runif(s)^2 <= 1) * 4 / s 論理値型ベクトルは数値計算の関数や演算子に渡すと数値「TRUE=1」「FALSE=0」と解釈される。上記の計算では、それを利用して集約関数の sum で合計を出している。 ベクトルは「論理添字(元のベクトルと要素数が等しい論理値型ベクトルを用いた添字指定)」を使うことで要素の絞り込みができ、そのベクトルに対して付値を行うと、絞り込んだ要素だけを別内容に置き換えることが可能になる。論理添字も変数に付値すれば複数の取り回しはさらに簡素化する。 Rの添字では数値ベクトルによる「数値添字」も利用でき、変数に付値もでき要素抽出にも不自由なく使えるが、「論理添字」の場合は複数を揃えて論理計算できるため、数値添字だけでは難しい複雑な抽出処理が制御も分岐も使わず明快に出来る。 添字ベクトルxの利用は基本的に、1次元ベクトル・テーブルでは『変数 [x]』のように記述して指示する。行列などでは次元数に適宜準じ指定添字次元だけが間引き対象になり、時系列やレコードの部分抽出などに利用される。 以下は論理添字同士の論理計算を利用したFizzBuzz問題の解答例。(記号"#"から改行まではコメント文) このコードをコメント文に照らせば、処理の論理が無理なく実装されていることが見て取れる。ここでは「FizzSet」と「BuzzSet」が論理添字変数であり、これらによる、抽出・置換・論理積を利用している。 なお、付値記号の矢印は代入の向きを左右どちら向きにもできる。一般的には左向き矢印が推奨されているが、機能は変わらないので混乱のない限り可読性の向上に利用できる。以下では「計算 -> 新規変数」「抽出要素 <- 置換値」の意味づけで用いている。 # 1から100までの整数を、ベクトルで生成する。(n: 加工前の数列 ・ Ans: 加工後の結果用数列)1:100 -> n -> Ans# 3倍数FizzSet相当のAns要素を、文字列"Fizz"に置き換える。(FizzSet: 3の倍数位置を示す論理ベクトル)Ans[n %% 3 == 0 -> FizzSet] <- "Fizz"# 5の倍数BuzzSet相当のAns要素を、文字列"Buzz"に置き換える。(BuzzSet: 5の倍数位置を示す論理ベクトル)Ans[n %% 5 == 0 -> BuzzSet] <- "Buzz"# 両倍数共通集合当のAns要素を、文字列"FizzBuzz"に置き換えるAns[FizzSet & BuzzSet] <- "FizzBuzz"# 出力するcat(Ans) ベクトル各種演算加えて行列各種演算が可能である。 イテレーターとしての for をはじめ各種制御命令充実しているので、ベクトルや行列の簡潔な処理では書けない制御大型計算記述できる。

※この「ベクトル処理言語」の解説は、「R言語」の解説の一部です。
「ベクトル処理言語」を含む「R言語」の記事については、「R言語」の概要を参照ください。

ウィキペディア小見出し辞書の「ベクトル処理言語」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ベクトル処理言語」の関連用語

1
6% |||||

2
4% |||||

ベクトル処理言語のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ベクトル処理言語のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのR言語 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS