1

4 つのデータ ポイントを表す 4 つの棒グラフを使用して、複数の単純な棒グラフを生成して jpeg に保存する必要があります。コードをループさせて、目的の形式で正しい数の jpeg ファイル バープロットを生成することに成功しました。しかし、各バープロットに関連するデータを挿入するために必要なコードはわかりません。各ファイル/プロットで表される同じデータを持つ複数のプロットしか作成できません。関連データを各プロットに挿入するには、コードの何を変更すればよいですか?

以下は私が持っているコードです。

「names」は、「personid」という名前の変数を 1 つ含むデータフレームです。「personid」には、「mydata」内のすべての変数名が含まれています。

「mydata」は、次のように設定されたデータフレームです。

  J5A J5B J5C ...
w 2.1 1.3 3.2 ...
x 1.9 2.2 1.8 ...
y 1.5 2.4 1.8 ...
z 1.9 2.2 1.7 ...

コードで変数名 (mydata$J5A など) を使用すると、J5A のデータをすべて含む個別の jpeg ファイルで 43 のプロットを作成できます。良くない。私の理解では、ループが中止されてエラーが発生するため、mydata$kid.i を使用する必要がありますが、明らかに使用しないでください。

"Error in barplot.default(kid.i, xlab = "Language Skills", ylim = c(1,  : 
'height' must be a vector or a matrix"

コード:

allkids <- unique(names$personid)
for (i in 1 : 43) {
setwd("D:/R/BARPLOTS/")
kid.i <- allkids[i]
filename <- paste (kid.i, ".jpg", sep="")
jpeg(file = filename)
barplot(mydata$J5A, xlab = "Language Skills", ylim = c(1,3), xpd = FALSE,
    names.arg=working2$varname, axes=FALSE, cex.names=.8, col=c("darkblue","red",
    "darkgreen", "yellow"))
dev.off()
}

更新:興味のある方のために、バグが削除された最終的な作業コードを次に示します。

allkids <- unique(names$personid)
for (i in 2 : 44) {
setwd("D:/R/BARPLOTS/")
kid.i <- allkids[i]
filename <- paste (kid.i, ".jpg", sep="")
jpeg(file = filename)
barplot(mydata[, i], xlab = "Language Skills", ylim = c(1,3), xpd = FALSE,
    names.arg=working2$varname, axes=FALSE, cex.names=.8, col=c("darkblue","red",
    "darkgreen", "yellow"))
dev.off()
}
4

1 に答える 1

0

あなたはかなり近いです!犯人はここにいます: barplot(mydata$J5A ....
代わりに使用したい

  barplot(mydata[, i] . . .. .





それを明らかにしたのは、最初の引数barplotがもちろんデータであることです。したがって、その引数を調べて、for ループの反復ごとに変化するかどうかを確認します。 mydata$J5Aは定数であり、代わりに次のiようなへの参照が必要です。mydata[, i]

コメントごとに更新
最初の列 (または最初の数列) が、プロットしたいデータ (ラベル、名前、その他の機能など) ではない場合、iその列の後に反復変数 を開始する必要があります。上記の特定のケースでは、使用したい

  for (i in 2:ncol(myData))  {
    . . . 
  }
于 2013-04-03T15:17:10.457 に答える