||
这个软件包, 主要是可以将R的对象生产Latex和html的格式,但是对于输出word和直接在R中显示支持不够. 这样就用到到了第二个软件包: flextable.
flextable有很多功能, 比较好用的是它可以将xtable的格式转化为flextable, 这样就可以进行图表的可视化和结果输出, 它可以输出word和PPT格式, 下面以几个示例进行演示.
xtable和flextable在CRAN上, 所以通过install.packages直接安装即可, 安装代码如下(去掉注释#后执行代码)
# install.packages("xtable") # install.packages("flextable")
这里, 我们使用一个汇总统计, 结果包括性状, 最大值, 最小值, 标准差, 变异系数等, 结果是三线表的形式.
library(VSNR) data(fm) str(fm)
TreeID Spacing Rep Fam Plot dj dm wd h1 h2 h3 h4 h5 1 80001 3 1 70048 1 0.334 0.405 0.358 29 130 239 420 630 2 80002 3 1 70048 2 0.348 0.393 0.365 24 107 242 410 600 3 80004 3 1 70048 4 0.354 0.429 0.379 19 82 180 300 500 4 80005 3 1 70017 1 0.335 0.408 0.363 46 168 301 510 700 5 80008 3 1 70017 4 0.322 0.372 0.332 33 135 271 470 670 6 80026 3 1 70002 2 0.359 0.450 0.392 30 132 258 390 570
生成一个汇总函数
计算性状的总个数, 最大值, 最小值, 标准差, 变异系数等.
func <- function(x)(c(n = length(x),mean=mean(x,na.rm = T),max = max(x,na.rm = T), min = min(x,na.rm = T),sd=sd(x,na.rm = T),cv=sd(x,na.rm = T)/mean(x,na.rm = T)*100))
将数据重塑: melt
因为要分析多个性状, 这里将性状放到一列, 使用函数melt进行重塑数据.
library(tidyverse) library(reshape2) tt = melt(fm,1:5) head(tt)
这里, 多个性状dj, dm等性状, 放到variable一列.
TreeID Spacing Rep Fam Plot variable value 1 80001 3 1 70048 1 dj 0.334 2 80002 3 1 70048 2 dj 0.348 3 80004 3 1 70048 4 dj 0.354 4 80005 3 1 70017 1 dj 0.335 5 80008 3 1 70017 4 dj 0.322 6 80026 3 1 70002 2 dj 0.359
a = aggregate(value~variable,tt,func) re = cbind(type = a$variable,as.data.frame(a$value))
library(xtable) library(flextable) m1 = xtable_to_flextable(xtable(re)) m1
效果如下
mod1 = summary(aov(dj ~ Spacing + Rep + Fam, data=fm)) xtable_to_flextable(xtable(mod1))
mod2 = summary(lm(h5 ~ dj,fm)) xtable_to_flextable(xtable(mod2))
mod3 = summary(lm(h5 ~ dj+h1 +h2 +h3 +h4,fm)) tt = xtable_to_flextable(xtable(mod3)) tt
library(officer) doc = read_docx() doc = body_add_flextable(doc,tt) print(doc,"d:/tt.docx")
word中查看结果
关注我的公众号:
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-27 16:04
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社