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

因数を関数の返す値として表示.処理を終了する.

 

 

デバック

誤りを修正するため,どこに誤りがあるのかを探し,見つけて,修正すること.

このページ

デバッグ |

の説明がけっこうよさそう.

途中で変数の値を調べる

cat:文字列表示の関数,print:オブジェクト表示の関数

評価の途中で変数を調べる

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