几个大型时间序列图未在R Markdown中显示

时间:2016-02-18 02:40:45

标签: r plot ggplot2 r-markdown

我有一个包含16个独立时间序列的大型数据集。我想在3x7网格中绘制它们,其中顶行是以IN结尾的每个时间序列,最下面的行是以OUT结尾的每个时间序列。在中间行,我将重复以RN结尾的两个时间序列中的每一个,每个时间序列对应于每个IN / OUT对。我收到了在早期post编写脚本的帮助,但仍无法让R Studio输出我的图。任何智慧或指导将不胜感激。这是我的dataset和代码:

title: "Data Report"
author: "Dr.Vini42"
date: "February 17, 2016"
output: word_document
---


```{r, echo=FALSE}

library(ggplot2)

numbers <- read.csv("./AllData.csv", header=TRUE) 
num <- (ncol(numbers) - 4)/4*3 #converts 36 columns to 24 plots involving 8 timeseries

par(mfrow=c(3,7))
for(i in 1:num){
  if (i < 8) {
    qplot(as.Date(numbers[[4*i+1]],"%m/%d/%Y %H:%M"), numbers[[4*i+2]], xlab="Date", ylab="Feet", main=names(numbers)[4*i+2])
  } else if (i < 15) {
    qplot(as.Date(numbers[[4*i-6]],"%m/%d/%Y %H:%M"), numbers[[4*i-5]],  xlab="Date", ylab="Feet", main=names(numbers)[4*i-5])
  } else {
    qplot(as.Date(numbers[[4*i-13]],"%m/%d/%Y %H:%M"), numbers[[4*i-12]], xlab="Date", ylab="Feet", main=names(numbers)[4*i-12])
  }
}

``` 

1 个答案:

答案 0 :(得分:2)

knitr的{​​{1}}循环中,您需要将您的情节置于print( )声明中

循环外knitr识别它需要打印并为您完成。在循环内部它没有。

```{r}
...

par(mfrow=c(3,7))
for(i in 1:num){
  if (i < 8) {
    print( qplot(as.Date(numbers[[4*i+1]],"%m/%d/%Y %H:%M"), numbers[[4*i+2]], xlab="Date", ylab="Feet", main=names(numbers)[4*i+2]) )
  } else {
    ...
  }
}

``` 

<强>更新

我通常不会将整个文件下载到测试代码中,但是,我已经例外了......

要查看您的问题,请运行以下行

i <- 1
as.Date(numbers[[4*i+2]],"%m/%d/%Y %H:%M") ## this should error
numbers[[6]]            ## this shows you the data 

您正尝试将numbers[[6]](第6列)中的数据转换为mm/dd/yyyy hh:mm格式的日期,但这些值只是小数,因此无法转换为日期