用DataFrames把微分方程的结果列出来的时候为没有timestamp的列


#1

用DifferentialEquations解微分方程,然后用DataFrames把的结果列出来的时候没有timestamp的列是为什么有大佬知道吗,
http://docs.juliadiffeq.org/latest/features/io.html
把教程里的两个例子复制进去跑了下,第一个结果和教程一样,但是第二个就没有timestamp的列,结果还是按行现实的,不是竖着两列。


#2

可能是bug,我写个小函数,你可以将就用一下。

julia> function toDataFrame(sol::DiffEqBase.DESolution)
           if DiffEqBase.has_syms(sol.prob.f)
               return DataFrame([sol.t, [[u[i] for u in sol.u] for i in eachindex(first(sol.u))]...], [:timestamp, sol.prob.f.syms...])
           else
               return DataFrame(sol)
           end
       end
toDataFrame (generic function with 1 method)

julia> toDataFrame(sol1)
17×5 DataFrame
│ Row │ timestamp │ value1   │ value2   │ value3   │ value4   │
│     │ Float64   │ Float64  │ Float64  │ Float64  │ Float64  │
├─────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1   │ 0.0       │ 0.585821 │ 0.607552 │ 0.623866 │ 0.649416 │
│ 2   │ 0.0625    │ 0.622801 │ 0.645903 │ 0.663247 │ 0.69041  │
│ 3   │ 0.125     │ 0.662116 │ 0.686676 │ 0.705115 │ 0.733992 │
│ 4   │ 0.1875    │ 0.703912 │ 0.730022 │ 0.749625 │ 0.780325 │
│ 5   │ 0.25      │ 0.748346 │ 0.776105 │ 0.796945 │ 0.829583 │
│ 6   │ 0.3125    │ 0.795586 │ 0.825097 │ 0.847253 │ 0.881951 │
│ 7   │ 0.375     │ 0.845807 │ 0.877181 │ 0.900735 │ 0.937624 │
│ 8   │ 0.4375    │ 0.899198 │ 0.932553 │ 0.957594 │ 0.996811 │
│ 9   │ 0.5       │ 0.95596  │ 0.99142  │ 1.01804  │ 1.05974  │
│ 10  │ 0.5625    │ 1.01631  │ 1.054    │ 1.08231  │ 1.12663  │
│ 11  │ 0.625     │ 1.08046  │ 1.12054  │ 1.15063  │ 1.19775  │
│ 12  │ 0.6875    │ 1.14866  │ 1.19127  │ 1.22326  │ 1.27336  │
│ 13  │ 0.75      │ 1.22117  │ 1.26647  │ 1.30048  │ 1.35374  │
│ 14  │ 0.8125    │ 1.29826  │ 1.34642  │ 1.38257  │ 1.43919  │
│ 15  │ 0.875     │ 1.38021  │ 1.43141  │ 1.46985  │ 1.53004  │
│ 16  │ 0.9375    │ 1.46734  │ 1.52177  │ 1.56263  │ 1.62663  │
│ 17  │ 1.0       │ 1.55996  │ 1.61783  │ 1.66127  │ 1.72931  │

julia> toDataFrame(sol2)
7×3 DataFrame
│ Row │ timestamp  │ x       │ y        │
│     │ Float64    │ Float64 │ Float64  │
├─────┼────────────┼─────────┼──────────┤
│ 1   │ 0.0        │ 1.0     │ 1.0      │
│ 2   │ 0.0776085  │ 1.04549 │ 0.857668 │
│ 3   │ 0.232645   │ 1.17587 │ 0.63946  │
│ 4   │ 0.429118   │ 1.41968 │ 0.456996 │
│ 5   │ 0.679082   │ 1.87672 │ 0.324733 │
│ 6   │ 0.944406   │ 2.58825 │ 0.263362 │
│ 7   │ 1.0        │ 2.77285 │ 0.25871  │