Julia -- 没有方法匹配 +(::Float64, ::Vector{Float64})

问题描述 投票:0回答:1

我一开始没有使用点符号,添加它后我仍然收到错误。 是什么让这项工作成功? 有没有一本书或网址描述解决这个问题的语法规则?

我在 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

julia
1个回答
0
投票

请注意,

discount2pcd[:, :pct]
thisResult[:,years]
都是
Vector{Float64}
。您不能简单地将标量添加到 Julia 中的向量,因此您还需要使用广播点表示法。

(1.0 .+ discount2pct[:, :pct]) .^ (2015 .- thisResult[:,years])
© www.soinside.com 2019 - 2024. All rights reserved.