10

在 R 中,capture.output()可以将输出捕获到stdout表达式中作为字符向量,例如

> x = capture.output(print(1:10))
> x
[1] " [1]  1  2  3  4  5  6  7  8  9 10"

Julia中有等效的功能吗?

4

3 回答 3

6

使用 Julia 0.2,现在有一种捕获标准输出的方法:您可以调用redirect_stdout 将其转换STDOUT为可以读取的管道。

这主要用于捕获来自外部 C 库的输出。正如 Stefan 所提到的,大多数 Julia I/O 函数都接受一个io参数,该参数允许您打印到任意目标,例如字符串缓冲区。

于 2014-02-06T21:13:17.890 回答
4

标准库函数都应该接受一个可选的 IO 类型的第一个参数,如果提供,它将被打印到,否则将默认为 STDOUT。在这种情况下,您可以使用sprint(io->f(io,...))来捕获打印到字符串的内容。如果尚未编写函数以打印到给定的 IO 对象,则无法重定向输出。

于 2013-07-21T17:12:12.197 回答
3

不知道你在追求什么,但如果你想带来knitr那么julia棒!

Gadfly 包有 weave,它可以做到这一点。

查看https://github.com/dcjones/Gadfly.jl/blob/master/src/weave.jl#L19

https://github.com/dcjones/Gadfly.jl/blob/master/src/weave.jl#L423

我一直在https://github.com/jverzani/Weave.jl中使用它从 Markdown 进行自我评分测验。

于 2013-07-21T23:57:20.780 回答