● 66 ページ 上から 10 行目
そこで以下, → そこで以下に
● 69 ページ 中程の 2 つのプログラム片
tmp <- 0
for (i in 1:3) {
for (j in 1:3) {
tmp <- tmp+x[i, j]
}
print(tmp)
tmp <- 0
}
↓
for (i in 1:3) {
tmp <- 0
for (j in 1:3) {
tmp <- tmp+x[i, j]
}
print(tmp)
}
tmp <- 0
for (i in 1:3) {
for (j in 1:3) {
tmp <- tmp+x[j, i]
}
print(tmp)
tmp <- 0
}
↓
for (i in 1:3) {
tmp <- 0
for (j in 1:3) {
tmp <- tmp+x[j, i]
}
print(tmp)
}
適切なときに適切に初期化する
● 70 ページ 上から 2 行目
任意の演算子ないし関数 → 任意の関数
"+" は演算子ではなく関数
● 76 ページ 上から 2 行目
地の文で文字列をくくる引用符がここだけちゃんと“ ”になっている(そうあるべきなのだが)。ほかは全部 ” ”になっていて,気持ち悪いことこの上ない。せめて " " ならまだしも。
● 77 ページ 上から 2 行目
関数か@演算子 → 関数か @ 演算子
漢字・ひらがなと英字・記号がくっつきすぎているところが散見される。
● 79 ページ 下から 14 行目
行列をみなされる → 行列とみなされる
● 79 ページ 下から 13 行目
関数を 1 行 9 列と扱う → 関数を使って 1 行 9 列として扱う
● 80 ページ 下から 14 行目 最後の 2 行も関連で
第 3 引数に演算子を指定 → 第 3 引数に演算を表す関数を指定
第 3 引数に指定するのは関数。
● 79 ページから始まる九九表の作成プログラム
最終的に,
paste(outer(1:9, 1:9, paste, sep="*"), outer(1:9, 1:9, "*"), sep="=")
として,82 ページのコラムの上で,「なお上記の出力では,横幅が足りないために,"9*9=81" が最後に行送りされています」と書いている。
生成されるのがベクトルなんだから,横幅を制御して 9 行 9 列にしようというのは何だろう(コラムでは 83 ページの下に「width を 90 に設定するのが適切でしょう」と書いている)。
せめて,この結果を matrix 関数で 9 行 9 列にすべきだろう。
matrix(paste(outer(1:9, 1:9, paste, sep="*"), outer(1:9, 1:9, "*"), sep="="), 9)
しかし,そもそも,outer を 2 回使う必要はない。第 3 引数には 2 つの引数が渡されるので,無名関数を使えば,その引数は何回でも使える。
ということで,以下のように単純明快に書ける。
outer(1:9, 1:9, function(x, y) sprintf("%i*%i=%i", x, y, x*y))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] "1*1=1" "1*2=2" "1*3=3" "1*4=4" "1*5=5" "1*6=6" "1*7=7" "1*8=8" "1*9=9"
[2,] "2*1=2" "2*2=4" "2*3=6" "2*4=8" "2*5=10" "2*6=12" "2*7=14" "2*8=16" "2*9=18"
[3,] "3*1=3" "3*2=6" "3*3=9" "3*4=12" "3*5=15" "3*6=18" "3*7=21" "3*8=24" "3*9=27"
[4,] "4*1=4" "4*2=8" "4*3=12" "4*4=16" "4*5=20" "4*6=24" "4*7=28" "4*8=32" "4*9=36"
[5,] "5*1=5" "5*2=10" "5*3=15" "5*4=20" "5*5=25" "5*6=30" "5*7=35" "5*8=40" "5*9=45"
[6,] "6*1=6" "6*2=12" "6*3=18" "6*4=24" "6*5=30" "6*6=36" "6*7=42" "6*8=48" "6*9=54"
[7,] "7*1=7" "7*2=14" "7*3=21" "7*4=28" "7*5=35" "7*6=42" "7*7=49" "7*8=56" "7*9=63"
[8,] "8*1=8" "8*2=16" "8*3=24" "8*4=32" "8*5=40" "8*6=48" "8*7=56" "8*8=64" "8*9=72"
[9,] "9*1=9" "9*2=18" "9*3=27" "9*4=36" "9*5=45" "9*6=54" "9*7=63" "9*8=72" "9*9=81"
sprintf 関数なんて持ち出したくないなあということならば,paste 関数で以下のごとく。
outer(1:9, 1:9, function(x, y) paste(x, "*", y, "=", x*y, sep=""))
● 83 ページ 下から 15 行目
小数点以下の桁数の指定 → 有効数字の指定
デフォルトの状態で 12.345678 と 123.45678 を入力してみるとわかる
● 92 ページ 上から 14 行目 及び関連して下から 7 行
文字列を操作する方法を正規表現といいます → 文字列を指定する方法を正規表現といいます
● 93 ページ 上から 14 行目
パターンを探すのが → パターンを表すのが
● 93 ページ 上から 17 行目
文字列全体を指定 → 文字列を指定
● 93 ページ 下から 2 行目
空白(””) → 空(””)
● 95 ページ 上から 15 行目
もとのベクトルで位置番号 → もとのベクトルでの位置番号
● 95 ページ 上から 19 行目
関数そのものを添え字に → 関数の結果を添え字に
● 95 ページ 上から 21 行目
全ての列をそのまま残すという意味 → その行全部という意味
● 96 ページ 上から 15 行目
データフレームを列で並び替えを行う → データフレームを特定の列の値の順序で並べ替えを行う
● 97 ページ 上から 14 行目
指定した順に → 指定した変数の値の順に
● 97 ページ 上から 15 行目
name で重複する要素 → name の値が同順位の要素
● 98 ページ 下から 15 行目
間にカンマを挟めば → カンマで区切れば
まだつづく...
※コメント投稿者のブログIDはブログ作成者のみに通知されます