9

関数内で生成されたプロットを印刷しようとしていたRStudioのR-Markdown機能を使用しようとしています。これは、私がやろうとしていることの基本的な要約例です。

**Test printing plots generated in a function**
================================================

``` {r  fig.width=8, fig.height=4, warning=FALSE, eval=TRUE, message=FALSE, tidy=TRUE, dev='png', echo=FALSE, fig.show='hold', fig.align='center'}
dat <- data.frame(x=c(1:10),y=c(11:20),z=c(21:30),name=rep(c("a","b"),each=5))
library(ggplot2)

ex <- function(data){

  plot(data[,1],data[,2])
  plot(data[,1],data[,3])
}

for (i in 1:10){
t1 <- rbind(i,ex(dat))
}
t1
```

このコードをテストする場合は、必ず「.Rmd」ファイルとして保存してから、RStudioツールバーでknithtml()を実行してください。上記のこのコードは、私が望む種類のhtml出力で完全に正常に機能します。ただし、基本プロット関数をggplotベースのコードに置き換えると、knithtml()を取得して、以前のように取得した10個のプロットのggplot出力を生成できません。上記のベースプロットコードは、次のコードに置き換えられました

  p1 <- ggplot(data=data, aes(x=data[,1],y=data[,2]))
  p1 <- p1+geom_point()
  p1 

ここで非常に単純なものが欠けていますか?

VJ

4

1 に答える 1

6

コードには 2 つの問題があります。

  1. ggplot は、データ環境内で動作するため、データ x および y データを認識しません。列名を直接指定する必要があります。
  2. yur ループのコードは意味がありません。プロットとインデックスを混在させることはできません... (ベース プロットで機能する理由は、副作用によるものです) 単純なプロット コマンドに置き換えました。

以下が機能します。

**Test printing plots generated in a function**
================================================

``` {r  fig.width=8, fig.height=4, warning=FALSE, eval=TRUE, message=FALSE, tidy=TRUE, dev='png', echo=FALSE, fig.show='hold', fig.align='center'}
dat <- data.frame(x=c(1:10),y=c(11:20),z=c(21:30),name=rep(c("a","b"),each=5))
library(ggplot2)

ex <- function(data){
  p1 <- ggplot(data=data, aes(x=x,y=y))
  p1 <- p1+geom_point()
  return(p1) 
}

for (i in 1:2){
plot(ex(dat))
}

```
于 2012-07-11T16:58:17.777 に答える