# Simple type/array problem

d = [1.3, 2., 3., 4.3]
dd =[1., 3.]
dd = 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;
it works!

Thank you for helping me to fix this!

``````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 = sum(q[t,1:5], dims=1);
ERROR: UndefVarError: q not defined
Stacktrace:
 top-level scope
@ REPL:1
``````

Post a runnable MWE with triple back-ticks

`````````
like this
```
``````

1 Like

This is like trying to do the following:

``````julia> dd = [1.0, 3.0];

julia> dd = [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:
 setindex!(A::Vector{Float64}, x::Vector{Int64}, i1::Int64)
@ Base ./array.jl:903
 top-level scope
@ REPL: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` (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 = sum(d)
``````