我有一个包含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])
}
}
```
答案 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
格式的日期,但这些值只是小数,因此无法转换为日期