Csv Netlogo-项预期输入为字符串,但实际输入为零
这是一个与前一篇文章相关的后续问题。我有16位笔记本电脑消费者的评论评级数据,他们要么满意(16人),要么不满意(6人)。它们被定义为海龟,通过询问布尔变量是否满足,可以区分它们?还是不满意?这是真的。 数据集如下所示:Csv Netlogo-项预期输入为字符串,但实际输入为零,csv,netlogo,Csv,Netlogo,这是一个与前一篇文章相关的后续问题。我有16位笔记本电脑消费者的评论评级数据,他们要么满意(16人),要么不满意(6人)。它们被定义为海龟,通过询问布尔变量是否满足,可以区分它们?还是不满意?这是真的。 数据集如下所示: extensions [csv matrix array nw] globals [ rowcounter csv ii Sc-headings Bat-headings Pr-headings income-headings average-head
extensions [csv matrix array nw]
globals
[
rowcounter
csv
ii
Sc-headings Bat-headings Pr-headings income-headings average-headings;
Sc-set
Bat-set
Pr-set
prodcount ;num of producer agents
]
turtles-own [
turtle-Sc-list
turtle-Bat-list
turtle-Pr-list
turtle-income-list
turtle-average-list
review-set
satisfied?
dissatisfied?
LapUtl-set
ScPWU
BatPWU
PrPWU
]
to setup
clear-all
file-close-all
set rowcounter 1
proddata
readdataset
reset-ticks
end
breed [ producers producer ]
to go
Reviewrating
end
to intlz
set Sc-set []
set Bat-set []
set Pr-set []
end
读取数据集:
to readdataset
file-close-all ; close all open files
file-open "turtle_details.csv"
let headings csv:from-row file-read-line ;header is read
; Splitting headings of the csv file into 5 categories representing screen
; size data, battery charge data, Price data, income data, max age of an owner
set Sc-headings sublist headings 2 7
set Bat-headings sublist headings 7 12
set Pr-headings sublist headings 12 17
set income-headings sublist headings 17 18
set average-headings sublist headings 18 length headings
while [ not file-at-end? ] [
let data csv:from-row file-read-line
create-turtles 1 [
set shape "person"
set size 2.5
ifelse rowcounter < 11
[
set color 125
set satisfied? true
set dissatisfied? false ;
]
;else
[
set color 65
set satisfied? false
set dissatisfied? true ;
]
setxy random-xcor random-ycor
; hide-turtle
set turtle-Sc-list sublist data 2 7
set turtle-Bat-list sublist data 7 12
set turtle-Pr-list sublist data 12 17
set turtle-income-list sublist data 17 18
set turtle-averageage-list sublist data 18 length data
]
set rowcounter rowcounter + 1
]
file-close-all
end
应该从数据集中提取的东西是对消费者的评估(评论)。每个消费者都有一个评审集,该评审集首先是一个空集[],然后它将保留与三个生产者的三个评审值相对应的值
to reviewrating
ask turtles [
set review-set []
]
ask turtles [
set ii 0
while [ii < 3 ][
set ScPWU turtle-Sc-rating item ii Sc-set
set BatPWU turtle-Bat-rating item ii Bat-set
set PrPWU turtle-Pr-rating item ii Pr-set
set LapUtl-set lput (ScPWU + BatPWU + PrPWU) LapUtl-set
set ii ii + 1
] ; while
];ask
end
to-report turtle-Sc-rating [Sc]
let pos position Sc Sc-headings
if is-number? position Sc Sc-headings
[
let turt-Sc-rate-value item pos turtle-Sc-list
report turt-Sc-rate-value
]
end
to-report turtle-Bat-rating [Bat]
let pos position Bat Bat-headings
if is-number? position Bat Bat-headings
[
let turt-Bat-rate-value item pos turtle-Bat-list
report turt-Bat-rate-value
]
;***************
end
to-report turtle-Pr-rating [Pr]
let pos position Pr Pr-headings
if is-number? position Pr Pr-headings
[
let turt-Pr-rate-value item pos turtle-Pr-list
report turt-Pr-rate-value
]
end
如何解决tihs
谢谢,我怀疑您没有正确报告错误。我怀疑错误是
error:ITEM期望此输入是字符串或列表,但得到的是数字。下面是一个产生此错误的方法示例:项0
。如果我是对的,那么您正在运行代码让turt Sc rate value item pos turtle Sc list
,而turtle Sc list
的值为0
。要确认这一点,请将此代码替换为
ifelse (is-list? turtle-Sc-list)
[let turt-Sc-rate-value item pos turtle-Sc-list]
[error (word "turtle-Sc-list is not a list.")]
现在运行代码。如果它引发错误“列表不是列表。”
,则您可以搜索无法正确初始化此变量的原因。错误说明了什么?你提到你以前会遇到一个不同的错误,这就是我假设的标题,但是你现在遇到的错误是什么?谢谢你的回复。通过向上移动“go”过程并在设置后进行操作,修复了先前的错误。这是关于程序的顺序。现在,错误显示了我的问题标题中的内容:“项目预期输入为字符串,但得到的却是零”代码>没有文件或其他实际运行所需的东西,很难看到发生了什么。我不清楚LapUtl
向量与错误之间的关系,因为它似乎没有在相关过程中使用。我建议您对打印语句进行一些基本调试。在海龟Sc评级程序中,执行一些打印语句(例如print Sc
,print pos
),以确保变量内容符合您的预期。如果这不能帮助你自己解决问题,试着给我们问题的过程,调用它的过程,以及一些变量的值。
let turt-Sc-rate-value **item** pos turtle-Sc-list
ifelse (is-list? turtle-Sc-list)
[let turt-Sc-rate-value item pos turtle-Sc-list]
[error (word "turtle-Sc-list is not a list.")]