在 julia 中,如何将表达式的输出分配给新变量?
In julia, how do I assign the output of an expression to a new variable?
愚蠢的例子,我想做类似的事情
X=println("hi"),
并获得
X="hi".
我认为张贴者想要访问您可以从 println 获得的漂亮摘要格式。将其作为字符串访问的一种方法是使用 print 写入缓冲区,然后将其作为字符串读回。可能还有更简单的方法。
using DataFrames
data = DataFrame()
data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman", "Batman", "Bob", "Adam"]
data[:mealType] = ["bug", "worm", "worm", "bug", "worm", "worm", "stick"]
stream = IOBuffer()
println(data)
print(stream, data)
yourString = takebuf_string(stream)
returns
"7x2 DataFrame\n| Row | turtle | mealType |\n|-----|----------|----------|\n| 1 | \"Suzy\" | \"bug\" |\n| 2 | \"Suzy\" | \"worm\" |\n| 3 | \"Bob\" | \"worm\" |\n| 4 | \"Batman\" | \"bug\" |\n| 5 | \"Batman\" | \"worm\" |\n| 6 | \"Bob\" | \"worm\" |\n| 7 | \"Adam\" | \"stick\" |"
如果您需要格式化字符串,您可以使用 @sprintf
.
julia> x = @sprintf("%s", "hi")
"hi"
julia> x
"hi"
julia> x = @sprintf("%d/%d", 3, 4)
"3/4"
这是一个宏,所以要小心
一般的解决方案是使用上面@ARM 描述的IOBuffer
和takebuf_string
。如果足以捕获 print
的输出,则
s = string(args...)
给出本应由 print(args...)
打印的字符串。还有,
s = repr(X)
给出本应由 showall(X)
打印的字符串。两者都是在内部使用 IOBuffer
和 takebuf_string
实现的。
愚蠢的例子,我想做类似的事情
X=println("hi"),
并获得
X="hi".
我认为张贴者想要访问您可以从 println 获得的漂亮摘要格式。将其作为字符串访问的一种方法是使用 print 写入缓冲区,然后将其作为字符串读回。可能还有更简单的方法。
using DataFrames
data = DataFrame()
data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman", "Batman", "Bob", "Adam"]
data[:mealType] = ["bug", "worm", "worm", "bug", "worm", "worm", "stick"]
stream = IOBuffer()
println(data)
print(stream, data)
yourString = takebuf_string(stream)
returns
"7x2 DataFrame\n| Row | turtle | mealType |\n|-----|----------|----------|\n| 1 | \"Suzy\" | \"bug\" |\n| 2 | \"Suzy\" | \"worm\" |\n| 3 | \"Bob\" | \"worm\" |\n| 4 | \"Batman\" | \"bug\" |\n| 5 | \"Batman\" | \"worm\" |\n| 6 | \"Bob\" | \"worm\" |\n| 7 | \"Adam\" | \"stick\" |"
如果您需要格式化字符串,您可以使用 @sprintf
.
julia> x = @sprintf("%s", "hi")
"hi"
julia> x
"hi"
julia> x = @sprintf("%d/%d", 3, 4)
"3/4"
这是一个宏,所以要小心
一般的解决方案是使用上面@ARM 描述的IOBuffer
和takebuf_string
。如果足以捕获 print
的输出,则
s = string(args...)
给出本应由 print(args...)
打印的字符串。还有,
s = repr(X)
给出本应由 showall(X)
打印的字符串。两者都是在内部使用 IOBuffer
和 takebuf_string
实现的。