为了全能的爱,我还没有理解符号的目的'iamasymbol.我理解数字,布尔值,字符串...变量.但是符号对于我的小思维思维来说太过分了.我究竟用它做什么用的?它们应该如何在程序中使用?我对这个概念的把握只是失败了.
Lisp中的同质性很容易看出:
(+ 1 2)
既是函数调用+与1,2作为参数,以及作为含有一个列表+,1和2.它同时是代码和数据.
但是,像朱莉娅这样的语言:
1 + 2
我知道我们可以Expr在Julia中将其解析为:
:(1 + 2)
然后我们可以获得AST并操纵它:
julia> Meta.show_sexpr(:(1+2))
(:call, :+, 1, 2)
因此,我们可以在Julia(和Elixir)中操纵程序的AST.但它们是否与Lisp一样具有同音性 - 任何代码片段实际上只是语言本身的数据结构吗?
我不知道1 + 2Julia中的代码是如何立即像(+ 1 2)Lisp中的数据一样只是一个列表.它仍然是杀人的吗?
假设我创建了这个简单的字符串宏
macro e_str(s)
return string("I touched this: ",s)
end
Run Code Online (Sandbox Code Playgroud)
如果我将它应用于带插值的字符串,我会得到:
julia> e"foobar $(log(2))"
"I touched this: foobar \$(log(2))"
Run Code Online (Sandbox Code Playgroud)
而我想获得:
julia> e"foobar $(log(2))"
"I touched this: foobar 0.6931471805599453"
Run Code Online (Sandbox Code Playgroud)
我必须对我的宏声明做出哪些更改?
在朱莉娅0.4我有一个名为variablex的变量
in: variablex = 6
out: 6
in: typeof(variablex)
out: Int64
Run Code Online (Sandbox Code Playgroud)
我想将变量的名称保存为字符串,所以我想最终得到类似下面的变量'a'的东西,它将变量'variablex'的名称存储为字符串.
in: a = Name(variablex)
out: variablex
in: typeof(a)
out: ASCIIString
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我刚刚编写了函数'Name',它将变量的名称作为字符串返回.Julia中是否存在与上面的虚构示例函数"Name"相同的功能?
这可能是一个愚蠢的问题,但对于我来说,我无法弄清楚如何让 Julia 读取列名以数字开头的 csv 文件并在 DataFrame 中使用它们。如何做到这一点?
例如,假设我有文件“test.csv”,其中包含以下内容:
,1Y,2Y,3Y
1Y,11,12,13
2Y,21,22,23
Run Code Online (Sandbox Code Playgroud)
如果我只使用 readtable(),我会得到:
julia> using DataFrames
julia> df = readtable("test.csv")
2x4 DataFrames.DataFrame
| Row | x | x1Y | x2Y | x3Y |
|-----|------|-----|-----|-----|
| 1 | "1Y" | 11 | 12 | 13 |
| 2 | "2Y" | 21 | 22 | 23 |
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?如何使列名称成为应有的名称,“1Y”、“2Y”等?