---
title: "墨尔本房价分析报告"
author: "Jean"
date: "`r Sys.Date()`"
output: html_document
runtime: shiny
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## 运行一些R代码，以便在报告里引用它们的结果。

```{r eruptions, echo=FALSE}
# 输入输出例子
# inputPanel(
#   selectInput("n_breaks", label = "Number of bins:",
#               choices = c(10, 20, 35, 50), selected = 20),
#   
#   sliderInput("bw_adjust", label = "Bandwidth adjustment:",
#               min = 0.2, max = 2, value = 1, step = 0.2)
# )
# 
# renderPlot({
#   hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks),
#        xlab = "Duration (minutes)", main = "Geyser eruption duration")
#   
#   dens <- density(faithful$eruptions, adjust = input$bw_adjust)
#   lines(dens, col = "blue")
# })
```

显示当前的工作目录，显示代码及其执行结果是为了说明这是一个R markdown报告。

```{r somecode, echo=TRUE}
getwd()
```


## 嵌入完整Shiny App

通过在R Markdown 报告中使用 `shinyAppDir` 函数嵌入其它目录下运行的完整Shiny App，本例嵌入了Shiny App “墨尔本房价回归分析”，它调用底层的Python脚本在预处理数据的基础上完成各个回归模型的计算(当时是用Python研究的GBDT回归模型，当然也可以完全用R来完成)，Shiny App主要是管理各个回归模型数据的交互式可视化展示：

```{r shinyapp, eval=FALSE, echo=TRUE, out.width="100%"}
# R markdown嵌入Shiny App时，目前不支持加载global.R, 具体见下面的issue
# https://github.com/rstudio/rmarkdown/issues/211
# 对于使用global.R的Shiny App，要自己手动加载global.R
# 不过在Rstudio开发环境中虽然测试通过了，但在Shiny Server部署运行时有问题。
# global.R应该是正常加载了，但UI中不能显示所有render()函数渲染的组件，目前还没有找到原因。
source("../melbourne/global.R")
shinyAppDir(
  "../melbourne",
  options = list(
    width = "100%", height=1000
  )
)
# 
# 这一行输出正常，证明在Shiny Server中手动加载global.R执行正常。
# perf
```

改用include_app来嵌入App，因为它是通过IFRAME嵌入的，没有运行环境的影响。
```{r,  eval=TRUE, echo=TRUE, out.width="100%"}
# knitr::include_app()在Rstudio开发环境与Shiny Server部署环境运行都正常。
knitr::include_app("https://jeanye.cn:4443/shiny/users/jean/melbourne/", height="1200px")

```



