Julia For-Loop Scopeping- 如何覆盖 DataFrame 的值并让新值保留到下一次迭代?

Julia For-Loop Scoping- How do I overwrite values of a DataFrame and have the new values persist to the next iteration?

提问人:Livid 提问时间:11/12/2023 更新时间:11/12/2023 访问量:51

问:

我的代码如下所示:

using DataFrames

# Simulation
out0   = Vector[];
nsim   = Int(1e1);

## Initialize player parameters to random integers between 1 and 100
params = rand(1:100, (5,4));
params = DataFrame(params, :auto);
params.player_id = 1:nrow(params);
params = params[!, [5; 1:4]];

for n in 1:nsim

    # Aggregate current simulation results
    df_vector = DataFrame[];
    push!(df_vector, params);

    # Add current results to final
    push!(out0, df_vector);
    
    # Update parameters
    params[!, 2:5] = max.(min.(params[!, 2:5] .+ rand(-2:2, 5, 4), 100), 0);
    # params = max.(min.(params .+ rand(-2:2, 5, 4), 100), 0);

end

如果我省略“playerID”列并简单地覆盖参数,那么它就会按预期工作。覆盖列 2:5 的行确实有效,但是当我签出 0 时,参数的值都相同。此外,这个重复的 DataFrame 是最后一个生成的 DataFrame。

DataFrame for 循环 范围 Julia

评论


答: 暂无答案