当我运行模拟时,我喜欢初始化一个大的空数组,并在模拟迭代结束时填充它.我是这样做的res = Array(Real,(n_iterations,n_parameters))
.但是,拥有命名列会更好,我认为这意味着使用DataFrame.然而,当我尝试做类似的事情时res_df = convert(DataFrame,res)
会抛出错误.我想要一个更简洁的方法,而不是像res_df = DataFrame(a=Array(Real,N),b=Array(Real,N),c=Array(Real,N),....)
答案所建议的那样:julia创建一个空数据框并向其追加行
您可以使用DataFrame(column_eltypes::Array{T,1},cnames::Array{T,1},nrows::Integer)
构造函数:
julia> DataFrame([Real,Real,Real],[:a,:b,:c], 10000)
10000x3 DataFrame
| Row | a | b | c |
|-------|----|----|----|
| 1 | NA | NA | NA |
| 2 | NA | NA | NA |
?
| 9998 | NA | NA | NA |
| 9999 | NA | NA | NA |
| 10000 | NA | NA | NA |
Run Code Online (Sandbox Code Playgroud)
也就是说,我强烈建议您为阵列使用具体类型而不是Real
; 例如,DataFrame([Float64, Float64, …
.这样做会带来巨大的性能提升.