作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想保存输出可变长度数组的模拟结果。通常我会运行模拟,将其保存在一个数组中,将它与一个包含先前结果的数组连接起来,然后通过制作一个数据框然后使用 CSV.write 来保存包含所有结果的数组。但是,由于数组的长度可变,hcat() 将不起作用。下面是我想做的玩具示例。
output = zeros(5)
number_simulations = 10
for i = 1:number_simulations
l = sample([4, 5, 6, 7])
print(l)
for j = 1:l
new_out = zeros(l)
hcat(output, new_out)
end
end
df = convert(DataFrame, output)
CSV.write("out.csv", df)
返回错误
DimensionMismatch("vectors must have same lengths").
是否有一个简单的解决方法可以让我在一个单独的列中包含每个模拟结果的文件?
最佳答案
这里的最佳实践可能是只使用“高”/“长”/“整洁”数据集,在其中将模拟数字存储在一个向量中,垂直堆叠的结果存储在另一个向量中(可能还有索引在第三)。
但是为了实现您的目标,我只是将输出直接存储到 DataArray
的向量中。然后你可以将它们的大小调整为最后最大的一个:
julia> output = DataVector{Float64}[]
number_simulations = 10
for i = 1:number_simulations
l = sample([4, 5, 6, 7])
print(l)
for j = 1:l
push!(output, zeros(l)) # This converts the array to a DataVector
end
end
5746656565
julia> resize!.(output, maximum(length, output))
DataFrame(output)
7×55 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 │ x5 │ x6 │ x7 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 1 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 2 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 3 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 4 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 5 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 6 │ NA │ NA │ NA │ NA │ NA │ 0.0 │ 0.0 │
│ 7 │ NA │ NA │ NA │ NA │ NA │ 0.0 │ 0.0 │
⋮
关于arrays - 在 Julia 的单个数据框中保存不同长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303713/
我是一名优秀的程序员,十分优秀!