which()
例えば、勝率>60%なら赤、<40%なら青、で描いてみようとしたとき、R-tipsを見て x<- runif(100) plot(x,col=ifelse(x>2/3,"red","blue")) で2色では描けるのですが、色を増やそうと思って plot(x,col=if(x>2/3,"red"),elseif(x>1/3,"blue"),else("green")) と書くとエラーで、それならグラフを何枚も上書きしようとして if(x>2/3){plot(x,col="red")} par(new=T) ・・・ と書くと条件が長さ2以上で…と出るので何かいい案あればお願いします。
これに対して。
- ベクトルの要素のうち、条件を取り出す関数which()を使う
- 離散的確率変数の確率密度を累積確率分布にする関数cumsum()
- モノクロトーンを作る関数gray()
library(MCMCpack) k<-4 v<-rdirichlet(1,rep(1,k)) accumv<-cumsum(v) col<-c("red","blue","green","pink") # in case many categories, "col<-gray((1:k)/(k+1))" for example Nsim<-100 x<-runif(Nsim) xlim<-c(1,Nsim) ylim<-c(0,1) par(mfcol=c(1,2)) plot(which(x<accumv[1]),x[which(x<accumv[1])],col=col[1],xlim=xlim,ylim=ylim) for(i in 2:k){ par(new=TRUE) plot(which(x<accumv[i] & x>=accumv[i-1]),x[which(x<accumv[i] & x>=accumv[i-1])],col=col[i],xlim=xlim,ylim=ylim) } col<-gray((1:k)/(k+1)) plot(which(x<accumv[1]),x[which(x<accumv[1])],col=col[1],xlim=xlim,ylim=ylim) for(i in 2:k){ par(new=TRUE) plot(which(x<accumv[i] & x>=accumv[i-1]),x[which(x<accumv[i] & x>=accumv[i-1])],col=col[i],xlim=xlim,ylim=ylim) }