使用knit_expand()模板

谢一辉

2024-04-05

几个简单的例子:

图书馆(knitr)knit_expand(text='pi的值是{{pi}}.')
##[1]“pi的值为3.14159265358979。”
knit_expand(text=“a的值是{{a}},所以a+1是{a+1}}。”,a=rnorm(1))
##[1]“a的值是-0.53420885071924,因此a+1是0.46579114928076。”
knit_expand(text='半径为{{r}}的圆的面积是{{pi*r^2}}',r=5)
##[1]“半径为5的圆的面积为78.5398163397448”

任意数量的变量:

knitexpand(text='a是{{a}},b是{{b}}。我自己的pi是{pi}}而不是{{base::pi}}',a=1,b=2,pi=3)
##[1]“a是1,b是2,我自己的pi是3,而不是3.14159265358979”

自定义分隔符<% %>:

knit_expand(text='我不喜欢花括号,所以用%代替<>:a是<%a%>.',a=8,delim=c(“<%”,“%>”))
##[1]“我不喜欢花括号,所以用%和<>代替:a是8。”

pyexpander分隔符:

knit_expand(text='hello$(字母[24])和$(pi)!',delim=c(“$(”,“)”)
##[1]“您好,X和3.14159265358979!”

任意R代码:

knit_expand(text=“您无法看到x{{x=rnorm(1)}}的值,但它确实已创建:x={{x}}”)
##[1]“你看不到x的值,但它确实被创建了:x=-1.43591569627506”
res=knit_expand(文本=c('x|x^2','{x=1:5;粘贴(sprintf(“%2d|%3d”,x,x^2),折叠=“\n”)}}')cat(资源)
##x|x^2##  1 |   1##  2 |   4##  3 |   9##  4 |  16##  5 |  25

m4示例:https://en.wikipedia.org/wiki/M4_(计算机_语言)

res=knit_expand(text=c('{{i=0;h2=函数(x){i<<-i+1;sprintf(“<h2>%d.%s</h2>”,i,x)}}<html>',“{{h2(“第一节”)}}',“{{h2(“第二节”){}',”{{h2-(“结论”)}','</html>'))cat(资源)
##<html>##<h2>1。第一节</h2>##<h2>2。第二节</h2>##<h2>3。结论</h2>##</html>

基于模板建立回归模型;循环遍历中的所有变量地铁车厢:

src=lapply(名称(mtcars)[-1],函数(i){knit_expand(text=c(“#{i}}上的回归”,'``{rlm-{i}{','lm(mpg~{i},data=mtcars)','``))})#编织源头res=knit_child(文本=未列出(src))res=粘贴('<pre><code>',gsub('^\\s*|\\s*$','',res),'</code></pre>',sep='')
#气缸上的回归```第页lm(mpg~cyl,数据=mtcars)``````## ##致电:##lm(公式=mpg ~ cyl,数据=mtcars)## ##系数:##(截距)气缸##      37.885       -2.876```#显示回归```第页lm(mpg~disp,数据=mtcars)``````## ##致电:##lm(公式=mpg~disp,数据=mtcars)## ##系数:##(拦截)调度##    29.59985     -0.04122```#hp回归```第页lm(mpg~hp,数据=mtcars)``````## ##电话:##lm(公式=mpg~hp,数据=mtcars)## ##系数:##(截距)hp##    30.09886     -0.06823```#drat回归```第页lm(mpg~drat,data=mtcars)``````## ##致电:##lm(公式=mpg~drat,数据=mtcars)## ##系数:##(截距)drat##-7.525 7.678```#重量回归```第页lm(mpg~wt,数据=mtcars)``````## ##致电:##lm(公式=mpg ~ wt,数据=mtcars)## ##系数:##(截距)wt##      37.285       -5.344```#基于qsec的回归```第页lm(mpg~qsec,数据=mtcars)``````## ##致电:##lm(公式=mpg~qsec,数据=mtcars)## ##系数:##(截距)qsec##      -5.114        1.412```#vs回归```第页lm(mpg~vs,data=mtcars)``````## ##致电:##lm(公式=mpg~vs,数据=mtcars)## ##系数:##(截距)vs##       16.62         7.94```#上午回归```对lm(mpg~am,数据=mtcars)``````## ##致电:##lm(公式=mpg~am,数据=mtcars)## ##系数:##(截距)上午##      17.147        7.245```#齿轮上的回归```第页lm(mpg~齿轮,数据=mtcars)``````## ##致电:##lm(公式=mpg~齿轮,数据=mtcars)## ##系数:##(拦截)齿轮##       5.623        3.923```#碳水化合物回归```第页lm(mpg~carb,数据=mtcars)``````## ##致电:##lm(公式=mpg ~ carb,数据=mtcars)## ##系数:##(截距)碳水化合物##      25.872       -2.056```