我一开始没有使用点符号,添加它后我仍然收到错误。 是什么让这项工作成功? 有没有一本书或网址描述解决这个问题的语法规则?
我在 Julia 版本 1.9.3 中运行它(2023-08-24) 使用 VSCode 版本:1.83.0 在 Windows_NT x64 10.0.19045 上 tkx,保罗
# Failing.jl -- example
using DataFrames
using Random
Random.seed!(1234)
start_year = 2015
end_year = 2020
n_steps = length(start_year:end_year)
thisResult = DataFrame(years = [start_year:1:end_year;],
net_output = rand(n_steps))
discount2pct = DataFrame(pct = fill(0.02,n_steps)[:,1])
colName = "Disc_2pct"
thisResult[!, "$colName"] .= thisResult[:, :net_output] ./ ((1.0 + discount2pct[:, :pct]) .^ (2015 - thisResult[:,years]))
错误:LoadError:MethodError:没有方法匹配 +(::Float64, ::Vector{Float64}) 对于逐元素加法,请使用广播 点语法:标量 .+ 数组 最接近的候选者是:+(::Any, ::Any, ::Any, ::Any...) @ 基运算符.jl:578 +(::T, ::T) 其中 T<:Union{Float16, Float32, Float64} @ Base float.jl:408
+(::Union{Float16, Float32, Float64}, ::BigFloat) @ Base mpfr.jl:423 ... Stacktrace: [1] 顶级范围 @ c:\失败.jl:13
请注意,
discount2pcd[:, :pct]
和 thisResult[:,years]
都是 Vector{Float64}
。您不能简单地将标量添加到 Julia 中的向量,因此您还需要使用广播点表示法。
(1.0 .+ discount2pct[:, :pct]) .^ (2015 .- thisResult[:,years])