【问题标题】:netlogo: problem with array: from-list (filternetlogo:数组问题:来自列表(过滤器
【发布时间】:2019-03-10 13:48:46
【问题描述】:

我想从我的数据集中过滤项目 1。原始数据集是一个 txt 文件,例如: [[1“公司”[23 34][1]“德黑兰”“中小企业”1389“应用研究”70 6“纳米技术”28571] 8“实验室”[14 27][1 6]“德黑兰”“公共”1386“基础研究”71 65“生物技术”502974]] 分析数据的主要代码是:

extensions [ array matrix table ] 
globals [
initial-emperical-data
emperical-firm-agent-records
  emperical-lab-agent-records ]
to setup
setup-agents
end
to setup-agents
load-initial-empirical-data
analyze-initial-empirical-data
end

to load-initial-emperical-data
 set activity "loading initial emperical data"
  if (file-exists? "c://users//saeed//desktop//initialempericaldata.txt")
 [ file-open "c://users//saeed//desktop//initialempericaldata.txt"
   set initial-emperical-data file-read
file-close ]
to analyze-initial-empirical-data 
set activity "Analyzing initial empirical data"
set activity "Analyzing initial empirical data"
set emperical-firm-agent-records (array:from-list (filter [? -> is-firm-record? ?] initial-emperical-data ))
set emperical-lab-agent-records ( array:from-list (filter [? -> is-lab-record? ?] initial-emperical-data ))
end
to-report is-firm-record? [rec]
report (org-type-for-agent-record rec ) = "firm"
end   
to-report is-lab-record? [rec]
  report (org-type-for-agent-record rec ) = "lab"
end
to-report org-id-for-agent-record [rec]
  report item 0 rec
end 
to-report org-type-for-agent-record [rec]
  report item 1 rec
end 

当我想运行模型时,我收到此错误:FILTER 预期输入是一个列表,但得到了数字 0。 我该如何解决这个错误? 感谢您的帮助

【问题讨论】:

    标签: arrays filter netlogo


    【解决方案1】:
    1. 请在您的代码中包含一个最小工作示例 (MWE)。
    2. 您似乎忘记初始化全局变量了。

    以下工作正常:

    extensions [array]
    globals [initial-empirical-data empirical-firm-agent-records empirical-lab-agent-records activity]
    
    to test
      setup
      analyze-initial-empirical-data
    end
    
    to setup
      set initial-empirical-data [ 
        [1 "firm" [23 34] [1] "Tehran" "SME" 1389 "Applied Research" 70 6 "Nanotech" 28571] 
        [8 "lab" [14 27] [1 6] "Tehran" "Public " 1386 "Basic Research" 71 65 "Biotech" 502974]
      ]
    end
    
    ; the main code for analyzing data is:
    
    to analyze-initial-empirical-data 
    set activity "Analyzing initial empirical data"
    set activity "Analyzing initial empirical data"
    set empirical-firm-agent-records (array:from-list (filter is-firm-record? initial-empirical-data ))
    set empirical-lab-agent-records ( array:from-list (filter is-lab-record? initial-empirical-data ))
    end
    
    to-report is-firm-record? [rec]
    report (org-type-for-agent-record rec ) = "firm"
    end   
    to-report is-lab-record? [rec]
      report (org-type-for-agent-record rec ) = "lab"
    end
    to-report org-id-for-agent-record [rec]
      report item 0 rec
    end 
    to-report org-type-for-agent-record [rec]
      report item 1 rec
    end 
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多