首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rd中\Sexpr[results=rd]{}到底是什么意思?

在Rd中\Sexpr[results=rd]{}到底是什么意思?
EN

Stack Overflow用户
提问于 2011-10-17 01:34:51
回答 1查看 427关注 0票数 4

我花了几个小时在R手册和parse_Rd()文档(以及参考资料中的PDF文档)上,但我仍然没有弄清楚results=rd的含义或如何使用它。我想我可以使用一个R代码片段动态地创建一个Rd片段。下面是一个示例,在这个示例中,我希望输出是HTML中的描述列表<DL>,但事实证明不是这样。

代码语言:javascript
复制
des <- "\\describe{\\item{def}{ghi}}"
con <- textConnection(c("\\title{abc}\\name{abc}",
                       "\\details{\\Sexpr[results=rd,stage=build]{des}}"))
z <- parse_Rd(con)
Rd2HTML(z, stages = "build")
close(con)

R2.13.2项下的产出:

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>R: abc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="R.css">
</head><body>
<table width="100%" summary="page for abc"><tr><td>abc</td><td
align="right">R Documentation</td></tr></table>
<h2>abc</h2>
<h3>Details</h3>
<p>defghi</p>
</body></html>

实际上,我构建了一个包含\Sexpr{}的Rd包,而不是真正使用Rd2HTML();在运行Rd构建之后,没有呈现内容。

有没有人尝试过用\Sexpr{}动态生成Rd片段?谢谢!

答案摘要

  • 少数人证实这在R2.13.1下有效,但在较晚的版本(2.13.2或更高版本)

下有效

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-17 09:15:17

对于我来说,您的示例适用于:

代码语言:javascript
复制
> sessionInfo()
R version 2.13.1 Patched (2011-07-08 r56332)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=C              LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] tools     stats     graphics  grDevices utils     datasets  methods  
[8] base

我得到:

代码语言:javascript
复制
> Rd2HTML(z, stages = "build")
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>R: abc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="R.css">
</head><body>

<table width="100%" summary="page for abc"><tr><td>abc</td><td align="right">R Documentation</td></tr></table>

<h2>abc</h2>

<h3>Details</h3>

<p><dl>
<dt>def</dt><dd>ghi</dd></dl>
</p>


</body></html>

我想我现在已经经历了一些排列,我对此有更好的理解。

代码语言:javascript
复制
\name{foo}
\alias{foo}
\title{foo bar}
\description{
blah blah blah
}
\details{
\Sexpr[results=rd, stage=render]{"\\\\describe{\\\\item{def}{ghi}}"}

\Sexpr[results=rd, stage=render]{(des <- "\\\\describe{\\\\item{def}{ghi}}")}

\Sexpr[results=rd, stage=render]{tools:::Rd_expr_PR(1234)}
}

工作,例如,通过以下方式处理时:

代码语言:javascript
复制
R CMD Rd2pdf foo.Rd

当我将它直接写入一个文件时,我还必须转义\,否则在处理Rd文件时会出现错误。

我使用stage=render是因为在这些演示过程中,我没有构建包(但正如我所说的,您的示例对我有用)。

当解析并呈现为HTML时,这也很好:

代码语言:javascript
复制
> foo <- parse_Rd("foo.Rd")
> Rd2HTML(foo)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>R: foo bar</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="R.css">
</head><body>

<table width="100%" summary="page for foo"><tr><td>foo</td><td align="right">R Documentation</td></tr></table>

<h2>foo bar</h2>

<h3>Description</h3>

<p>
blah blah blah
</p>


<h3>Details</h3>

<p>

</p>
<p>
<dl>
<dt>def</dt><dd>ghi</dd></dl>

</p>
<p>
<a href="https://bugs.R-project.org/bugzilla3/show_bug.cgi?id=1234">PR#1234</a>
</p>


</body></html>

一个稍微长一点的例子,展示了几种可以使用的方法,在一个主题上使用了三个变体:

(....)

  • Produce
  1. 手工生成字符向量]
  2. 生成字符向量并安排在一个\Sexpr语句中打印字符向量,没有输出,但通过第二个\Sexpr语句打印该向量。

以下是文件的内容:

代码语言:javascript
复制
\name{foo}
\alias{foo}
\title{foo bar}
\description{
blah blah blah
}
\details{
\Sexpr[results=rd, stage=render]{"\\\\describe{\\\\item{abc}{ghi}}"}

\Sexpr[results=rd, stage=render]{(des <- "\\\\describe{\\\\item{def}{ghi}}")}

\Sexpr[results=hide, stage=render]{des2 <- "\\\\describe{\\\\item{xyz}{ghi}}"}
\Sexpr[results=rd, stage=render]{des2}

\Sexpr[results=rd, stage=render]{tools:::Rd_expr_PR(1234)}
}

它使用R CMD Rd2pdf foo.Rd可以很好地呈现。

在Rd文件中写入此文件时,似乎需要额外转义任何\,如果您正在通过生成要解析和呈现的单个文件来尝试此操作,则需要stage=render

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7788628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档