0

重複の可能性:
R 関数内から複数のグラフィックスを生成する

この ggplot 関数を使用して、リストを使用して複数の変数をプロットしています。

plotTimeSeries <- list(n25_30,n28_30,n29_30,n31_30,n32_30)


for (i in plotTimeSeries) {
  i$dt <- strptime(i$dt, "%Y-%m-%d %H:%M:%S")
  ggplot(i, aes(dt, ambtemp)) + geom_line() +
    scale_x_datetime(breaks = date_breaks("2 hour"),
                     labels=date_format("%H:%M")) + 
    labs(x="Time 00.00 ~ 24:00 (2007-09-30)",y="Ambient Temperature",
         title = (paste("Node",i)))
}

データサンプル:

    ambtemp                  dt
1     -1.64 2007-09-29 00:01:09
2     -1.76 2007-09-29 00:03:09
3     -1.83 2007-09-29 00:05:09
4     -1.86 2007-09-29 00:07:09
5     -1.94 2007-09-29 00:09:09
6     -1.87 2007-09-29 00:11:09
7     -1.87 2007-09-29 00:13:09
8     -1.80 2007-09-29 00:15:09
9     -1.64 2007-09-29 00:17:09
10    -1.60 2007-09-29 00:19:09
11    -1.90 2007-09-29 00:21:09

rで関数を呼び出す方法がわかりません。実際、コードによるエラーは発生しませんでした。一方、このコードを台無しにしても結果は出ませんでした。

4

1 に答える 1

2

forループを使用しているときは、関数内で「一種」です。割り当てはグローバル環境で発生するため(ループがコンソールから起動されたと仮定)、「一種」と言いますが、ggplotラップlatticeされない限りプロットは発生しませんprintまたは同等のplot. だからこれをしてください(そしてFAQも読んでください):

for (i in plotTimeSeries) {
  i$dt <- strptime(i$dt, "%Y-%m-%d %H:%M:%S")
  print(
  ggplot(i, aes(dt, ambtemp)) + geom_line() +
    scale_x_datetime(breaks = date_breaks("2 hour"),
                     labels=date_format("%H:%M")) + 
    labs(x="Time 00.00 ~ 24:00 (2007-09-30)",y="Ambient Temperature",
         title = (paste("Node",i)))
        )  # append most recent plot
    }

以前の投稿を複製するリスクがありますが、何が起こっているのかを詳しく説明することはまだ役立つかもしれないと考えました. コンソールで入力すると、 kbd-returnが送信されるとすぐに実行される暗黙の「read-eval-print」ループがあります。ループでコードを実行すると、そのプロセスの「印刷」部分は自動ではなく、2 つのグリッド プロット パラダイムの場合、値を黙って返します。明示的に印刷または割り当てられていない場合、回復できる結果やグラフィックス デバイスにプッシュされる結果はありません。名前への割り当てがあった場合、プロットは印刷されるか、さらに変更される可能性があります。

plotlist <- list()
for (i in plotTimeSeries) {
  i$dt <- strptime(i$dt, "%Y-%m-%d %H:%M:%S")
  plotlist <- c(plotlist, 
  ggplot(i, aes(dt, ambtemp)) + geom_line() +
    scale_x_datetime(breaks = date_breaks("2 hour"),
                     labels=date_format("%H:%M")) + 
    labs(x="Time 00.00 ~ 24:00 (2007-09-30)",y="Ambient Temperature",
         title = (paste("Node",i)))
        )
               )
    }

lapply(plotlist, print)
于 2013-01-09T21:14:48.020 に答える