#创建动态报告
#范例一 用模板生成报告
library("rmarkdown")
render("example.Rmd","html_document")
#对照范例 线性回归,单独代码实现
l <- lm(weight~height,data=women)
s <- summary(l)
c <- coefficients(l) #返回相关系数向量
class(c) #返回向量,numeric
length(c) #返回2
c[1] #提取截距值
c[2] #提取height的相关系数
class(c[1]) #返回截距值的类型为numeric
class(c[[1]]) #返回截距值的类型为numeric
s$r.squared #提取R方, 0.9910098
library(xtable)
options(xtable.comment=FALSE)
print(xtable(s),type="html",html.table.attributes="border=0")
#结果解读
#<table border=0>
# <tr> <th> </th> <th> Estimate </th> <th> Std. Error </th> <th> t value </th> <th> Pr(>|t|) </th> </tr>
# <tr> <td align="right"> (Intercept) </td> <td align="right"> -87.5167 </td> <td align="right"> 5.9369 </td> <td align="right"> -14.74 </td> <td align="right"> 0.0000 </td> </tr>
# <tr> <td align="right"> height </td> <td align="right"> 3.4500 </td> <td align="right"> 0.0911 </td> <td align="right"> 37.86 </td> <td align="right"> 0.0000 </td> </tr>
# </table>
library(ggplot2)
ggplot(data=women,aes(x=height,y=weight))+
geom_point()+
geom_smooth(method="lm") #lm是参数,不是lm的对象l
#范例二 用R和Markdown创建动态报告,变量的灵活性应用
install.packages("rmarkdown")
install.packages("xtable")
library("rmarkdown")
library("xtable")
#创建women.Rmd文件 有嵌入R代码的Markdown模板
#基于women.Rmd创建html页面,当前工作目录下
library("rmarkdown")
#文件对象women.Rmd必须加引号,否则提示文件对象无法找到
render("women.Rmd","html_document")
#范例三 生成pdf文件
render("womenlatex.Rmd","pdf_document")
#范例四 生成doc 文件
render("womenword.Rmd","word_document")
#用R和LaTex创建动态报告
library(knitr)
#输出drugs.tex
knit("drugs.Rnw")
#一步转换成drugs.pdf
knit2pdf("drugs.Rnw")
#用R和Open Document创建动态报告
#Warning in install.packages :
# package ‘odfWeave’ is not available (for R version 3.4.4)
install.packages("odfWeave")
library(odfWeave)
infile <- "salaryTemplate.odt"
outfile <- "salaryReport.odf"
odfWeave(infile,outfile)
#用R和Microsoft Word创建动态报告
install.packages("R2wd")
install.packages("RDCOMClient")
library("R2wd")
library("RDCOMClient")
library(carData)
library(car)
df <- Salaries
n <- nrow(df)
fit <- lm(salary~rank*sex,data=df)
summary(fit)
aovTable <- Anova(fit,type=3)
aovTable <- round(as.data.frame(aovTable),3)
aovTable[is.na(aovTable)] <- ""
class(aovTable) #返回"data.frame"
#R2wd函数介绍
#wdGet,返回一个指向word文档的句柄,
#如果当前工作路径下的对应文件未打开,会自动启动,打开当前文档,然后返回对应的句柄
#salaryTemplate2.docx的书签默认不可见
#microsoft word 中选择“选项”-“高级”-“显示书签”,可以看见书签被添加在哪里
#一个大写的I
#如果想插入一个书签,把光标放在想添加书签的位置,选择“插入”-“书签”,为书签命名,然后点击添加
wdGet("salaryTemplate2.docx",method="RDCOMClient")
#wdGoToBookmark将光标移动到指定的书签位置
wdGoToBookmark("n")
#wdWrite,在光标处写入对象n的值
#在打开的文档窗口能看见数值插入
wdWrite(n)
wdGoToBookmark("aovTable")
#wdTable(),把一个数据框或一个向量作为一个word表格写入到当前光标所在的位置
#会打印null
#在打开的文档窗口能看见数据框插入
wdTable(aovTable,caption="Two-way Analysis of Variance",
caption.pos="above",pointsize = 12,autoformat = 4)
wdGoToBookmark("effectsPlot")
myplot <- function(){
require(effects)
par(mar=c(2,2,2,2))
plot(allEffects(fit),main="")
}
#创建一个R图片,把它粘贴到当前光标所在位置
#会打印null
#在打开的文档窗口能看见图片插入
wdPlot(plotfun=myplot,caption="Mean Effects Plot",
height=4,width=5,method="metafile")
#wdSave()保存文档
#会打印null
#如果没有文件名,则保存进当前文档句柄
#直接写文件名,但是并没有存到当前工作路径下
#D://Script//R//charpter_22//SalaryReport2.docx,写全完整路径,并且使用双斜杠
wdSave("D://Script//R//charpter_22//SalaryReport2.docx")
#关闭word,并移除句柄
wdQuit()