2017-07-01 18 views
0

私はこのような機能を持っている:リターンプロットと値が一緒に

fun <- function(dataset){ 
    require(ggplot2) 
    g <- ggplot(dataset, aes(x = x, y = y)) + geom_smooth(method = "lm") + geom_point() 

l<-lm(y~x) 
return (list(l, g)) 
    } 

を、私はプロットと値の両方を返すようにしたいが、それはプロットを返さないと、私はこのエラーに直面します。

Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) :
invalid graphics state

どうすればよいですか?

+0

[最小完全で実証可能な例](https://stackoverflow.com/help/mcve)をご提供ください。それがなければ、問題を理解することはかなり難しいです。 return文( 'p'ではなく' g')ではtypoが表示されますが、これは主要な問題ではありません。 – friep

+0

値をプロットにしたいですか? – AK88

+0

それははるかに良いだろうが、私の質問は、コンソールの値を印刷することについてでした – minoo

答えて

1

次のように動作し、プロットが表示されます。しかし、Rはこれを行う方法ではないと警告しています。

fun <- function(dataset){ 
    require(ggplot2) 
    p <- ggplot(dataset, aes(x = x, y = y)) + 
     geom_smooth(method = "lm") + geom_point() 

    l <- lm(y~x, data=dataset) 
    return (list(l, p)) 
} 

dataset <- data.frame(x= 1:10, y=1:10) 
out <- fun(dataset) 

編集:私は警告について見てきましたが、無視できるもののようです。リンクhttps://stat.ethz.ch/pipermail/r-devel/2016-December/073554.html

+0

私は試してみましたこれを返します[[1]] コール: lm(数式= df [、2]〜df [、1 】) 係数: (インターセプト)DF [1] 3.898e-16 -7.059e-01 [[2]] .Call.graphics(C_palette2、は.callに エラー(C_palette2、NULL) ): 無効なグラフィックス状態 – minoo

+0

私はプロットを描画していません – minoo

+0

プロットを得るには、コマンドプロンプトで 'out $ p'と打つ必要があります。この関数はプロットを返すだけです。 – Suren