裏 RjpWiki

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

ダメ出し:if 文

2011年12月19日 | ブログラミング

if 文 というタイトルのついたページ

例を挙げているのだから,揚げ足取ってもしようがないのだけど,パズルとして

以下のようなものは,

> set.seed(123)
> x <- sample(9,12,replace=TRUE)
> x <- matrix(x,nrow=2,dimnames=list(1:2,letters[1:6]))
> for(i in 1:ncol(x)) if(diff(x[,i]) > 0) x[,i] <- NA
> x
a b c d e f
1 NA NA 9 NA 5 9
2 NA NA 1 NA 5 5

以下のように書ける

> x[,x[2,] > x[1,]] <- NA
> x
   a  b c  d e f
1 NA NA 9 NA 5 9
2 NA NA 1 NA 5 5

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:散布図に記号を使うときは大きさの指定に注意すべし

2011年12月19日 | 統計学

変わった散布図 symbol 関数,そして引数 pch について少し にて

> x <- cbind("a"=1:5,"b"=5:1,"c"=6:10,"d"=10:6,"e"=sample(10,5)/10)
> symbols(x[,1:2],circles=x[,1]/10,inches=FALSE,main="circles")

散布図において,半径(直径)が度数を表すように描いてはならない。
面積が度数を表すように描くべし。
つまり,上のだと,circles=sqrt(x[,1])/10 と指定すべし。


x <- cbind("a"=1:5, "b"=5:1, "c"=6:10, "d"=10:6, "e"=sample(10, 5)/10)
symbols(x[, 1:2], circles=x[, 1]/10, inches=FALSE, main="circles ×")
symbols(x[, 1:2], circles=sqrt(x[, 1])/10, inches=FALSE, main="circles ○")



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:ダイナマイトプロット

2011年12月19日 | 統計学

棒グラフのいろいろ・その2 にて

ここに示されているようなグラフを,ダイナマイトプロットと呼ぶ。
描いてはいけないグラフの一つ。

なお,グラフを jpeg デバイスで描くのもどうかと思う。
せめて png で描こう。

また,プログラムで,カンマの後に空白がないと読みづらい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:truehist ??

2011年12月19日 | ブログラミング

ヒストグラムと箱髭図 にて

> truehist関数は総面積が1に基準化されるので、縦軸が異なります。

というのはうそ。freq=FALSE にすれば同じこと。

一番違うのは,hist では right=TRUE がデフォルトになっていて,一般常識と異なる点(事実,リンク先のページに表示されているヒストグラムが若干違うのは,このせい)。

right=FALSE にすれば truehist と同じになる。

layout(matrix(1:2, 1))
hist(iris$Sepal.Length, main="hist", prob=TRUE, right=FALSE)
library(MASS)
truehist(iris$Sepal.Length, main="truehist")

ちなみに,「truehist関数は色がつきます」だけど,ショッキングピンクならぬ蛍光色がかった水色は,目に痛い。

結局,truehist ってどこが true なの?という感じ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:行列の回転

2011年12月19日 | ブログラミング

image関数でイメージする(R Advent Calenderの番がきた) にて

> (x <- matrix(1:12,ncol=3))
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

> (y <- t(x[nrow(x):1,ncol(x):1])[ncol(x):1,])
     [,1] [,2] [,3] [,4]
[1,]    4    3    2    1
[2,]    8    7    6    5
[3,]   12   11   10    9

というのだが,以下のようにすればよい。

(y <- t(x[nrow(x):1,]))

ついでに,左90度回転

> t(x[,ncol(x):1])
     [,1] [,2] [,3] [,4]
[1,]    9   10   11   12
[2,]    5    6    7    8
[3,]    1    2    3    4

さらについでに,180度回転

> x[nrow(x):1, ncol(x):1]
     [,1] [,2] [,3]
[1,]   12    8    4
[2,]   11    7    3
[3,]   10    6    2
[4,]    9    5    1

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村