Inconsistent typing making adding arrays and adding a vector to the end of an array difficult

The following edited code runs, but I have no idea if it is correct nor efficient:

function rkf45(f::Function, t0::Number, tf::Number, conds, epsilon::Float64, dtInitial::Float64)
    dt = dtInitial;
    t = Float64[t0]
    vars = conds
    i = 1
    while ( t[i] < tf )
        varsi =  vars[i,:]
        dt = minimum((dt, tf-t[i]))
        K1 = dt*f(t[i], varsi)
        K2 = dt*f(t[i] + dt/4, varsi + K1/4)
        K3 = dt*f(t[i] + 3*dt/8, varsi + 3*K1/32 + 9*K2/32)
        K4 = dt*f(t[i] + 12*dt/13, varsi + 1932*K1/2197 - 7200*K2/2197 + 7296*K3/2197)
        K5 = dt*f(t[i] + dt, varsi + 439*K1/216 - 8*K2 + 3680*K3/513 - 845*K4/4104)
        K6 = dt*f(t[i] + dt/2, varsi - 8*K1/27 + 2*K2 - 3544*K3/2565 + 1859*K4/4104 - 11*K5/40)
        vars1 = varsi + 25*K1/216 + 1408*K3/2565 + 2197*K4/4104 - K5/5
        vars2 = varsi + 16*K1/135 + 6656*K3/12825 + 28561*K4/56430 - 9*K5/50 + 2*K6/55
        R = minimum(abs.(vars2-vars1)/dt)
        s = (epsilon/(2*R))^(1/4)   # can R = 0 depending on initial conditions?
        if ( R <= epsilon )
            t = vcat(t, t[i]+dt)
            vars = vcat(vars, vars1')
            i += 1
        end
        dt *= s
    end
    solution = solObj(t, vars)
    return solution;
end

To call the function, the initial conditions should be a row vector :

sol = rkf45(f, 0.0, 10, [0.5 0.5], 1e-6, 0.1)
1 Like