根据我的理解,=>
习惯将字符串绑定为变量名。
例如,
df1 = DataFrame(x=1:2, y= 11: 12)
df2 = DataFrame("x"=>1:2, "y"=> 11: 12)
两者返回相同的结果,
│ Row │ x │ y │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 11 │
│ 2 │ 2 │ 12 │
在这里,唯一的区别是indf1
的x
变量成立,1:2
而indf2
的"x"
字符串成立1:2
。因此,根据以上结果,我想从可以使用的字符串创建变量=>
。
但是当我尝试将值保存在如下所示的简单变量中时
x = 10
O / P: 10
"y"=>10
O / P: "y" => 10
这个结果我无法理解。当我打印时,x
它具有10
预期的效果。但是当我打印时y
我得到了UndefVarError
。我发现同样的效果Symbol
也:z =>10
我的=>
猜测是错误的。因为字符串实际上并未转换为新变量。
=>
朱莉娅的真正目的是什么?我必须在其中使用=>
而不是=
?
要了解什么=>
意思,只需写:
@edit 1 => 2
在源代码中,您将看到:
Pair(a, b) = Pair{typeof(a), typeof(b)}(a, b)
const => = Pair
所以a => b
只是的简写Pair(a, b)
。因此,它仅创建类型为Pair
holdinga
和的对象b
。这是一个调用(在这种情况下是对构造函数的调用)。仅此而已。它在语言中没有特殊含义。就像和1 ÷ 2
一样div(1, 2)
。
值得注意的是,您会发现DataFrames.jl=>
中Dict
和其中的a => b
形式a
和形式一样,b
可以使用任何形式。仅作比较:
df1 = DataFrame(x=1:2, y=11:12)
DataFrame
使用两个关键字参数 x
和调用构造函数y
。问题在于关键字参数被限制为有效的标识符(例如,它们不允许使用空格),因此并非可以使用此构造函数创建可以设想的所有数据框。
现在
df2 = DataFrame("x"=>1:2, "y"=>11:12)
调用DataFrame
构造器有两个位置参数是"x"=>1:2
和"y"=>11:12
。现在,如Pair
左图所示,您可以例如将字符串作为列名(字符串可以包含您喜欢的任何字符序列)。
换句话说DataFrame(x=1:2, y=11:12)
,DataFrame("x"=>1:2, "y"=>11:12)
是对数据帧的两个单独的构造函数的调用(它们在DataFrames.jl包中具有完全不同的实现)。实际上,我什DataFrame(x=1:2, y=11:12)
至会删除过时的方法(它不如后一种形式灵活),但出于遗留原因而提供(在玩具示例中,它的键入要容易一些)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句