特定のデータセットに新しい関数を適用する際に問題があるようです。ポリゴンにユーザー定義関数を適用して、特定のデータセットの円を繰り返し描くR
私は引数として半径rだけでなく中心のx座標xとy座標yをとり、(x + r sin(ti))に頂点を持つポリゴンを描画する関数 "circle"を定義しました。 ; y + rcos(ti))ここで、tiは0から2までの長さ100のシーケンスです。円に追加された引数はポリゴンに渡されます。
関数は次のようになります。それはまた、X、Y及びRは、長さのベクトルである場合に動作するように私は、機能を変更した
circle<-function(x,y,r,...) {
ti<-seq(0,(2*pi),length.out = 100)
polygon(x + r *sin(ti),y+r*cos(ti),...)
}
> 1.それはこのようになります
:だから、
circle<-function(x,y,r,...) {
ti<-seq(0,(2*pi),length.out = 100)
data.fun<-as.data.frame(cbind(x,y,r))
for (i in 1:nrow(data.fun)) {
polygon(x[i] + r[i] *sin(ti),y[i]+r[i]*cos(ti),...)
}
}
は、私が使用している場合:
plot(c(-3,3), c(-3,3), type="n")
circle(c(0,2), c(0,0), c(1, 0.5))
小さな円のある円を右に描画します。
ただし、与えられたデータセットに関数を適用し、x、y、rの列名を使用しようとすると機能しません。
データは次のようになります。
head(health)
Country Region Population LifeExpectancy HealthExpenditure
Albania Europe 3204284 76.90095 2.202286
Algeria Middle East 35468208 72.85254 1.981556
Angola Africa 19081912 50.65366 1.461099
Argentina Latin America 40412376 75.63215 7.592994
Armenia Europe 3092072 73.78356 1.337856
Australia East Asia 22065300 81.69512 51.735024
私は($ 100の内)医療費に対するplotof余命を作成する必要があります。プロットは、 sqrt(母集団[i])/ 10000の(HealthExpenditure [i] LifeExpectancy [i])に描かれた の円で構成され、それぞれの円の塗りつぶし色は はその地域を示す必要があります。
しかし、私は
circle(HealthExpenditure,LifeExpectancy,(sqrt(Population)/1000)),
機能が動作しないをしようとしたとき。 私はまた、列名をデフォルト値として関数を再定義しようとしましたが、成功しませんでした。
上記の列名に関数を適用し、国の円を1つずつプロットするにはどうすればよいですか? (私はMASSのeqscplot関数を使用しようとしています)
はお返事パフェをいただき、ありがとうございます。私はこの解決策を試しましたが、残念ながらコマンドはすべての行に対してNULLを返し、プロットには何も表示されません。私はまだ何が間違っているのか分からない。 – red22
私はプロットのx座標とy座標のみを調整した投稿データを使用して更新を表示します。私は別のベクトルとして渡す色を追加します。あなたは 'mapply'を* output *のようなオブジェクトに割り当てて、NULLからの印刷を避けることができます。 – Parfait