d = [1.3, 2., 3., 4.3]
dd =[1., 3.]
dd[2] = sum(q[t,1:5], dims=1);
This gives the following errow:
MethodError: Cannot convert
an object of type Vector{Float64} to an object of type Float64
Closest candidates are:
- convert(::Type{T}, ::T) where T<:Number at /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/base/number.jl:6*
- convert(::Type{T}, ::Number) where T<:Number at /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/base/number.jl:7*
- convert(::Type{T}, ::Base.TwicePrecision) where T<:Number at /Applications/Julia-1.7.app/Contents/Resources/julia/share/julia/base/twiceprecision.jl:262*
If i siply put
dd[2] = 2;
it works!
Thank you for helping me to fix this!
Your MWE is not complete:
julia> d = [1.3, 2., 3., 4.3]
4-element Vector{Float64}:
1.3
2.0
3.0
4.3
julia> dd =[1., 3.]
2-element Vector{Float64}:
1.0
3.0
julia> dd[2] = sum(q[t,1:5], dims=1);
ERROR: UndefVarError: q not defined
Stacktrace:
[1] top-level scope
@ REPL[3]:1
Post a runnable MWE with triple back-ticks
```
like this
```
and we can help you answer your question.
1 Like
This is like trying to do the following:
julia> dd = [1.0, 3.0];
julia> dd[2] = [1, 2, 3, 4, 5]
ERROR: MethodError: Cannot `convert` an object of type Vector{Int64} to an object of type Float64
Closest candidates are:
convert(::Type{T}, ::T) where T<:Number at ~/programs/julia/julia-1.7.0/share/julia/base/number.jl:6
convert(::Type{T}, ::Number) where T<:Number at ~/programs/julia/julia-1.7.0/share/julia/base/number.jl:7
convert(::Type{T}, ::Base.TwicePrecision) where T<:Number at ~/programs/julia/julia-1.7.0/share/julia/base/twiceprecision.jl:262
...
Stacktrace:
[1] setindex!(A::Vector{Float64}, x::Vector{Int64}, i1::Int64)
@ Base ./array.jl:903
[2] top-level scope
@ REPL[2]:1
I.e., sum(q[t,1:5], dims=1)
results in an Array
, not something that can be converted into a Float64
.
EDIT: If t
is a scalar, then q[t,1:5]
is a Vector
, in which case you can omit the dims
keyword argument if you actually want the scalar output of the summation.
sorry I changed the example for the question. in the sum function q is supposed to be d.
…and what’s the t
?
If I remove the t
I can do
d = [1.3, 2., 3., 4.3]
dd = [1., 3.]
but then
sum(d[1:4], dims=1)
1-element Vector{Float64}:
10.6
since summing over dimensions “collapses” them to size 1, but does still keep the array structure (vector here)
For a vector you could
julia> sum(d)
10.6
to actually get a number. This can be put into dd[2]
(where you just can “store” numbers but not vectors, since dd
is a vector of numbers).
So one solution (depending on your larger setting) could be
dd[2] = sum(d)