species <- c("A","B","A","C","D","E","A","B","E","A","C","B","D")と いうデータに対して,species=A,B,Dを抽出して,colorとsexのカテゴリ毎にplotしたいのです。即ち,「color=1,sex= 1」と「color=1,sex=2」と「color=2,sex=1」と「color=2,sex=2」の4つのplotoを作りたいのです。もちろ ん,4種類のデータ系列を作ってそれぞれプロットしていけばできますが,先にご指導頂いたように,一括してプロットできれば,図の変更等も簡単で間違いも 少ないため,そのようにやってみたいのですが,うまくいきません。以下のようにやってみましたが,forで指定する1:2がcolorとsexの両方にか かっていることが問題なのでしょうか。2つの変数をそれぞれ変化させて総当たりにするということになるかと思いますが,その方法がどうしても分かりませ ん。
length <- c(13,20,14,18,18,13,14,17,18,14,19,20,15)
color <- c(1,1,1,2,2,1,1,2,1,2,2,2,1)
sex <- c(1,1,1,1,1,1,1,2,2,2,2,2,2)
data <- data.frame(species = species, length = length, color = color, sex = sex)
data <- data[data$species =="A"|data$species =="B"|data$species =="D",]他に
par(mfrow=c(2,2))
for(i in 1:2){
selected <- is.element(color,i) & is.element(sex,i)
boxplot(length([selected]~factor(species[selected]))
}
set <- c(1,2)や
for(i in 1:2){
selected <- is.element(color,set[,i]) & is.element(sex,set[,i])
boxplot(length([selected]~factor(species[selected]))
}
for(i in 1:2){なども色々試しましたが,だめです。。
selected1 <- is.element(color,i)
selected2 <- is.element(sex,i)
selected <- selected1 | selected2
boxplot(length([selected]~factor(species[selected])))
}
No.01732 Re: R:抽出データの一括plot 【青木繁伸】 2006/12/02(Sat) 08:33
ポイントは,color と sex が2カテゴリーずつですので,組み合わすと4通りになるというところ。
しかるに,for は boxplot が2回しか繰り返されないと言うこと。
for を二重にします。(他にもやり方はあるんですが,簡単のために)for(i in 1:2) {
for (j in 1:2) {
selected <- is.element(color,i) & is.element(sex,j)
print(sum(selected))
boxplot(length[selected]~factor(species[selected]))
}
}
No.01736 Re: R:抽出データの一括plot 【Rはじめました】 2006/12/03(Sun) 01:59
なるほど,forを二重にすればよいのですね。
うまくいきました。
何度もありがとうございます。青木先生やコメントいただいた皆様に深謝いたします。
独学では厳しく,一度は諦めかけましたが,ここで救われました。
引き続き,Rに漬かっていきたいと思います。今後ともご指導のほど宜しくお願いします。
● 「統計学関連なんでもあり」の過去ログ--- 039 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る