元データ分析の会社で働いていた人の四方山話スマートフォン用の表示で見る元データ分析の会社で働いていた人の四方山話この広告は、90日以上更新していないブログに表示しています。見る今日はちらっとだけ進めた。2章の残り最後まで2.10プログラムの制御構造ループとか条件判定とか2.10.1条件判定ifはともかくifelseってのが面白そうな感じだ。swich()もあるらしい。{プログラミングコードの一部分}と記述すると便利である。おぉー、これは他の言語でも使えますね。Rって複数行をコメントアウトする機能ないのかな、と探しましたが見つかりませんでした。今まで#を連発していたので、これからはこいつを使って行こう。ifelse()では、ベクトルの要素ごとに条件の判定と式の実行がなされる。条件式も実行式もベクトルの要素ごとに評価が行われる。条件式の要素ごとに結果を分岐させれるワケですね。どこにどう使うか全く想像がつかないけど、使いこなせればスマートな感じになりますね。目新しいものとしてはrepeatか。以下の一文からwhile(1)とほぼ等価と考えてもいいのかな。制御語であるbreakで終了を指定されない限り無限に実行される。forはPythonのforとほぼ一緒なので、慣れたものである。重要なのが、「ループを避けるべき場合」と書かれた部分だろう。1行が1度だけ解読されるベクトルの要素ごとの評価と比較すると、ループは明らかに時間のかかる処理である。オブジェクトの転送回数も、ベクトルによる処理を選んだ方がはるかに少なくなる。他の方法(例えば、ベクトル処理)が可能な場合にはループは避けるべきである。目下のところ、for文の繰り返しに慣れた脳をRのベクトル脳に改造するのが急務である。速度を見える化してやらないと、なかなかベクトル脳になろうとしないのが俺クオリティなので、また実験しましょう。ベクトルの先に、C言語への拡張があるというワケですね。先はまだまだ長いですね。2.11文字列Rでそうそう文字列を扱うことはないだろうけど、動的にファイルを作って結果を吐き出させたいときには有効か。今使っているのは、prit()とpaste()くらいだけど、cat()が文字列出力で一番ベーシックなものなのね。実はこれけっこう重要かも。strptime()で文字列をPOSIXltクラスのオブジェクトに変換した後は引き算とかで時間差が求められるね。研究よりもアルバイトで必要かも。