在Julia中预先分配已知大小的数据帧

在Julia中预先分配已知大小的数据帧,julia,Julia,当我运行模拟时,我喜欢初始化一个大的空数组,并在模拟迭代到最后时填充它。我使用类似于res=Array(Real,(n_迭代,n_参数))的方法来实现这一点。不过,如果有命名列就好了,我认为这意味着使用数据框架。然而,当我尝试执行类似于res\u df=convert(DataFrame,res)的操作时,它会抛出一个错误。我想要一个更简洁的方法,而不是像以下答案所建议的那样做res_df=DataFrame(a=Array(Real,N),b=Array(Real,N),c=Array(Rea

当我运行模拟时,我喜欢初始化一个大的空数组,并在模拟迭代到最后时填充它。我使用类似于
res=Array(Real,(n_迭代,n_参数))
的方法来实现这一点。不过,如果有命名列就好了,我认为这意味着使用数据框架。然而,当我尝试执行类似于
res\u df=convert(DataFrame,res)
的操作时,它会抛出一个错误。我想要一个更简洁的方法,而不是像以下答案所建议的那样做
res_df=DataFrame(a=Array(Real,N),b=Array(Real,N),c=Array(Real,N),c=Array(Real,N),…)
你可以使用
数据框架(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 |

也就是说,我强烈建议您对数组使用具体类型,而不是真正的
Real
;e、 例如,
DataFrame([Float64,Float64,
。这样做会大大提高性能。

如果您知道所有列都是相同类型的,并且永远不会有未填充的(
NA
)元素,您可能还可以使用其他数据结构。请看一看,或者如果您愿意在不稳定的0.4上工作,您可以尝试我最近正在进行的工作。这两个项目都旨在通过维度名称和轴元数据更直接地增强内置的
数组
,而DataFrames使用列集合的方法。