2013-01-16 186 views
2

我运行到与knitr对HTML模板的rinline模式的问题:尖括号

inline.code : chr "<!--\\s*rinline\\s*([^>]*)\\s*-->" 

这种模式的本质意味着knitr不承认任何rinline表达式本身包含有角度的括号。 E.g:

<ul> 
<!--rinline I(paste("<li>",gene.black.list,"</li>",collapse="",sep="")) --> 
</ul> 

是不是由发动机评价,因为我想(gene.black.list只是一个字符向量,希望我的代码的意图很明显)。为了避开这个我做了以下内容:

<!--begin.rcode echo=F 
    tagged.gene.black.list = paste("<li>",gene.black.list,"</li>",collapse="",sep="") 
    end.rcode--> 

<ul> 
<!--rinline I(tagged.gene.black.list) --> 
</ul> 

其中一期工程,但似乎与创建多余的额外的变量和多个码块有点不尽人意。有没有更聪明,整洁的方式我失踪?

+0

是的,我需要改变正则表达式,但我不知道什么是正确的。理想情况下,我希望匹配一旦看到' - >'就停下来,这听起来像是一个非贪婪的匹配,但是''<! - \\ s * rinline(。*?) - >''不会解决问题(我想PCRE应该能够解决它)。所以我也需要帮助。 –

+0

啊,好的。无论如何,谢谢你的答案(和伟大的工具) - 至少我不会错过一些明显的东西! – user1980716

回答

0

我认为这个问题应该是Github上的fixed now。请从 Github的开发版本。基本上我把<!--\\s*rinline\\s*([^>]*)\\s*-->更改为<!--\\s*rinline(.+?)-->