String 如何在Netlogo中逐行导入CSV?

String 如何在Netlogo中逐行导入CSV?,string,list,netlogo,String,List,Netlogo,如何从CSV文件导入数据并逐行转换,以便在程序中使用?我希望它是一个字符串,但我不断收到错误消息,它仍然是一个列表或列表列表 我试图复制Netlogo用户手册中给出的示例,以便每勾一行读取一个文件(见下文)。我创建了一个简单的示例 extensions [CSV] globals [date] to setup clear-all file-close-all file-open "S&PDate.csv" set date current-date reset-

如何从CSV文件导入数据并逐行转换,以便在程序中使用?我希望它是一个字符串,但我不断收到错误消息,它仍然是一个列表或列表列表

我试图复制Netlogo用户手册中给出的示例,以便每勾一行读取一个文件(见下文)。我创建了一个简单的示例

extensions [CSV]
globals [date]


to setup
  clear-all
  file-close-all
  file-open "S&PDate.csv"
  set date current-date
  reset-ticks
end

to go
   if file-at-end? [stop]
   set date current-date
   tick
end

to-report current-date 
   file-open "S&PDate.csv"
   let result csv:from-row file-read-line 
   while [ not file-at-end? ] [
   let row csv:from-row file-read-line
   set result (map result row)
     ]
   file-close
   report result
end

我的想法是一次将CSV数据作为列表导入,然后按刻度数(即逐行)从列表中提取值


希望能有帮助。如果您需要进一步的澄清,请告诉我。

您能提供一些关于此代码段的额外注释吗@余江?嗨,斯图尔特。对不起,我添加了一些评论和说明。希望现在更清楚了。很棒的东西@yuJiang。谢谢你让StackoverFlow成为一个更好的地方。@maxNeumeyer你能接受这个答案吗?当然可以。谢谢--这一切都还在想。为什么要“一行一行”呢?这是要求吗?除非是一个大文件,否则只需使用
csv:from file
一次性读取整个文件即可。然后,您可以随时获取结果的任何项。(另外:您使用的
map
不正确。)为什么希望结果是字符串?CSV是用于存储列表列表的格式。如果只需要文件的原始字符串内容,可以使用NetLogo中的内置
文件-
原语。
extensions [csv]
globals [data variable]

to setup
file-close-all 
file-open "S&PDate.csv"
;; read the data all at once by using csv:from-file
set data csv:from-file "S&PDate.csv"
reset-ticks
end

to go
if file-at-end? [stop]
;;extract value from the list, using item 0 to remove the list, and just keep the value
set variable item 0 item ticks data
tick  
if ticks = length data [stop]
show variable
end