Julia IndexedTables的ndsparse如何定义待填充的未初始化空列
NDSparse表初始化解决方案
你可以按照如下方式定义两个待填充列,同时修正索引维度的定义问题:
using Pkg Pkg.add("IndexedTables") using IndexedTables start_period = 1 # 首个待统计周期编号 num_agents = 100 # 待模拟的个体数量 periods = [start_period, start_period + 3] # 计算总数据行数:个体数*周期数 total_rows = num_agents * length(periods) df = ndsparse( # 索引列:1~100的个体ID和两个周期的笛卡尔积 (Identifier = 1:num_agents, Period = periods), ( # state列:每个元素为独立的可变长度整数数组,初始为空 state = [Int[] for _ in 1:total_rows], # action列:整数类型,初始默认值设为0,需要支持缺失可替换为fill(missing, total_rows) action = zeros(Int, total_rows) ) ) print(df)
关键说明
- 原代码中
Identifier = [1, num_agents]仅包含两个索引值,修改为1:num_agents生成1到100的连续个体编号,匹配100个个体的模拟需求 - state列使用列表推导式生成独立的空整数数组,避免用
fill(Int[], total_rows)导致所有元素引用同一个数组的问题 - action列如果需要标记未填充状态,可将初始化值替换为
fill(missing, total_rows),列类型会自动适配为Union{Int, Missing}
内容的提问来源于stack exchange,提问作者Dmitry Mikushin
相关产品推荐
相关产品推荐

