裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ダメ出し:R で学ぶデータ・プログラミング入門 ―RStudioを活用する― その2

2012年12月06日 | ブログラミング

● 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 行目
間にカンマを挟めば → カンマで区切れば

まだつづく...

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:R で学ぶデータ・... | トップ | ダメ出し:R で学ぶデータ・... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事