9/26 きょうはなんだかねむい
理由はわかっているし非常によくない.なら寝たい.社会という感じ.
行列
要素はベクトルで用意,matrix()で行列に変換
for文
for(ループ変数 in リスト){繰り返す式}
リストは最初に1回だけ評価する.例えば
x <- 1:5
for (i in x) {x <- c(x,1)}
とすると,xが繰り返し操作中に変化することの影響は受けず,
x
[1] 1 2 3 4 5 1 2 3 4 5
となり,for (i in 1:5) {x <- c(x,1)}と同じである.
ループ範囲には行列,配列,リストも指定でき,その場合は実際はベクトルとしてアクセスできる.
next
この部分に到達すると,以下の部分の処理は行われずに繰り返し文の先頭に戻る.
break
repeatの処理を止める.repeatはbreak分が見つかるまで処理を繰り返す.
return
因数を関数の返す値として表示.処理を終了する.
デバック
誤りを修正するため,どこに誤りがあるのかを探し,見つけて,修正すること.
このページ
の説明がけっこうよさそう.
途中で変数の値を調べる
評価の途中で変数を調べる
browser:ここで処理が止まって入力待ちになる.入力コマンドはn(一行ずつの実行),c(関数実行の継続),ls()(現在までに生成されたオブジェクト,変数をすべて表示)など.そのほか,変数をそのまま入力(例> x)すればその値が返る.
デバックモードに入る
debug:ステップ実行(一行ずつの実行)状態になる.入力できるコマンドはbrowserのときと一緒.
関数の任意の場所にブレークポイントを仕掛ける
trace:途中にbrowserを挿入したり,recoverを指定して追跡したり.以下の例はbrowserを三行目に挿入したもの.
> func <- function(x) { + x <- x + 1 + y <- x + 1 + z <- y + 1 + w <- z + 1 + } > trace(func, tracer=browser, at=3) [1] "func" > func(0) Tracing func(0) step 3 Called from: eval(expr, p) Browse[1]> n debug: y <- x + 1 Browse[2]> x [1] 1 Browse[2]> y Error: object 'y' not found Browse[2]> n debug at #4: z <- y + 1 Browse[2]> y [1] 2 Browse[2]> z Error: object 'z' not found Browse[2]> n debug at #5: w <- z + 1