ggplot2のgeom_smooth以内にそれを使用するために、LMや黄土機能を変更します

StackOverflow https://stackoverflow.com/questions/2370648

  •  24-09-2019
  •  | 
  •  

質問

私はggplot2のlm(またはloess)でそれを使用できるようにgeom_smooth(または最終的にstat_smooth)機能を変更する必要があります。

たとえば、これはstat_smoothが通常使用される方法である。

> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm')`

私はその動作をカスタマイズすることができますので、lm2methodパラメータの値として使用するカスタムstat_smooth関数を定義したいと思います。

> lm2 <- function(formula, data, ...)
  {
      print(head(data))
      return(lm(formula, data, ...))
  }
> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm2')

私はmethod='lm2'のパラメータとしてstat_smoothを使用していることに注意してください。 私はこのコードを実行するとエラーが表示されます。

  

はevalでのエラー(exprの、ENVIR、enclos): 'nthcdrはは'

ダウンCDRにリストを必要とします
私は非常によく理解していない

lm2の外側を実行したときにstat_smooth方法は非常によく動作します。私はこのビットを演奏し、私は、エラーの種類を持っているが、私はRのデバッグツールで快適おりませんので、私はそれらをデバッグすることは困難です。正直なところ、私はreturn()コールの内側に置くべきか得ることはありません。

役に立ちましたか?

解決

私は完全に(それが...リスト型のオブジェクトであることとは何かを持っている)理解していないことを使用して...関数呼び出しの引数としていくつかのすごみがあります。

ここに私たち自身の呼び出し元のコンテキストで呼び出しをLMに呼び出される関数を設定し、オブジェクトとして関数呼び出しを取った後、評価することによって動作したバージョンです。この評価の結果は、我々の戻り値(私たちは、明示的なreturnを必要としないので、Rでの関数の最後の式の値が値が返される)である。

foo <- function(formula,data,...){
   print(head(data))
   x<-match.call()
   x[[1]]<-quote(lm)
   eval.parent(x)
}

あなたはLM呼び出しに引数を追加したい場合は、あなたがこのようにそれを行うことができます:

x$na.action <- 'na.exclude'

あなたはLMを呼び出す前に、FOOに引数をドロップしたい場合、あなたはこのようにそれを行うことができます。

x$useless <- NULL
あなたが唯一のいくつかの余分な引数

を設定する必要がある場合は、独自の関数を作成する必要はありませんので、ところで、geom_smoothstat_smoothは、スムージング機能に余分な引数を渡します
qplot(data=diamonds, carat, price, facets=~clarity) + 
  stat_smooth(method="loess",span=0.5)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top