当i=1
时,println(typeof("$i"))
和println(typeof(:($("$i"))))
都给出String
,println("$i")
和println(:($("$i")))
都给出1
。但是,以下代码
using DataFrames
df = DataFrame()
i = 1
df.:($("$i")) = [0.0]
println(df)
工作,但以下代码
using DataFrames
df = DataFrame()
i = 1
df."$i" = [0.0]
println(df)
不起作用。后一个代码出了什么问题?
我不建议您依赖这两种语法。这些是Julia解析器的角案例。
事实上:
df.:($("$i")) = [0.0]
在Julia解析器方面,作品很可能不是一个有意识的设计决策。注意:
df.:($("$i"))
失败。
如中所述https://dataframes.juliadata.org/stable/man/getting_started/:
请注意,在形式
df."col"
和:var"col"
中,使用$
将变量插值到字符串中是不起作用的。
如果要使用插值,请直接调用setproperty!
和getproperty
或使用getindex
/setindex!
,在这种情况下:
df[!, "$i"] = [0.0]