1

私の質問は、R のプロット関数と組み合わせた for ループに関するものです。1 つのプロットに複数の点をプロットしたいと考えています。関数の何が問題なのかわかりません。何か助けてください。

DATA
 a x y  z
149 1 1  0
153 1 1 10
160 1 1 10
149 1 2  0
153 1 2  0
160 1 2 10
149 2 1  0
153 2 1  0
160 2 1  5
149 2 2  0
153 2 2  0
160 2 2  5

PCH=0;
plot(c(142,169),c(0,11),type="n")
for(i in unique(DATA$x)) {
  for(j in unique(DATA$y)) {
    PCH=PCH+1
    select <- DATA[i,j]
    X = DATA[select,"a"]; 
    Y = DATA[select,"z"]
    points(X,Y,pch=PCH)
  }  
}
4

3 に答える 3

5

これはたまたまあなたが達成したいことをしますか?

plot(z~a,data=DATA,
         pch=as.numeric(interaction(x,y)),
         xlim=c(142,169),ylim=c(0,11))
于 2013-03-01T15:39:45.283 に答える
1

あなたの選択は間違っています。次のコードを試してください。

PCH <- 0
plot(c(142,169), c(0,11), type="n")
for(i in unique(DATA$x)) {
  for(j in unique(DATA$y)) {
    PCH <- PCH+1
    select <- DATA$x == i & DATA$y == j
    X <- DATA[select,"a"] 
    Y <- DATA[select,"z"]
    points(X,Y,pch=PCH)
  }  
}

別の構文上の意味を持つ他の目的でも使用されるため、 の代わり<-に使用する方が良いスタイルであることに注意してください。さらに、R では行末は必要ありません。==;

于 2013-03-01T15:39:19.530 に答える
1

X と Y の値がずれています。select ステートメントは必要ありません。

  plot(c(142,169),c(0,11),type="n")
  for(i in unique(DATA$x)) {
    for(j in unique(DATA$y)) {
      PCH=PCH+1
      X = DATA[(DATA$x==i) & (DATA$y==j),"a"]; 
      Y = DATA[(DATA$x==i) & (DATA$y==j),"z"]
     (points(X,Y,pch=PCH))
    }  
  }
于 2013-03-01T15:42:39.830 に答える