2

我正在为 R 包编写一个小插图文档,即使用 Sweave 生成​​一个 tex 文件(最后是一个 PDF)。

我想记录一个向用户请求控制台中的一些输入(标准输入)的函数。为了简化功能是:

foo<-function() {
    value=readline('Insert some value:')
    return(value)
}

为了在文档中包含此函数的示例,我在 .Rnw 文件中写入:

<<>>=
result=foo()
@

现在我们在一个文档文件上,所以显然不能在控制台中插入一个值,实际上输出的 pdf 是这样的:

Some introduction...

> foo()

Insert some value: 

Some conclusion...

由于 tex/pdf 的编译成功,我认为 Sweave 执行该函数,并自动重定向到 stdin 回车(或简单地停止 R 进程)。

我的问题是是否可以模拟用户输入。

一种解决方法可能是添加另一个“隐藏”块:

<<echo=FALSE>>=
result='Some value'
@

echo 设置为 false,因此该指令不会出现在文档上,变量 result 取所需的值。如果我需要在未来的一些块中重用这个变量,这很有用,但是这样读者可能会因为在未来的块中看到从无处出现的变量的值而感到困惑:我应该用纯文本解释我设置了值手动,因为无法在文档中请求用户输入。这不是很优雅。

我想在 pdf 的最后是这样的:

Some introduction...

> foo()

Insert some value: Here you can insert your desired value...

Some conclusion...

所以也许在 .Rnw 文件中是这样的:

<<input="Here you can insert your desired value...">>=
result=foo()
@

或者我不知道是否有必要从外部文件加载数据,它也可以,但我没有找到这样的东西。

4

0 回答 0