在 R 中,capture.output()
可以将输出捕获到stdout
表达式中作为字符向量,例如
> x = capture.output(print(1:10))
> x
[1] " [1] 1 2 3 4 5 6 7 8 9 10"
Julia中有等效的功能吗?
使用 Julia 0.2,现在有一种捕获标准输出的方法:您可以调用redirect_stdout 将其转换STDOUT
为可以读取的管道。
这主要用于捕获来自外部 C 库的输出。正如 Stefan 所提到的,大多数 Julia I/O 函数都接受一个io
参数,该参数允许您打印到任意目标,例如字符串缓冲区。
标准库函数都应该接受一个可选的 IO 类型的第一个参数,如果提供,它将被打印到,否则将默认为 STDOUT。在这种情况下,您可以使用sprint(io->f(io,...))
来捕获打印到字符串的内容。如果尚未编写函数以打印到给定的 IO 对象,则无法重定向输出。
不知道你在追求什么,但如果你想带来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 进行自我评分测验。