netlogo将字符串转换为嵌套列表中的数字
问题描述:
我在NetLogo和igraph(R)之间进行传输。从igraph返回的一些信息是2级嵌套的字符串列表。典型示例如下所示:netlogo将字符串转换为嵌套列表中的数字
[ ["1" "2" "3"] ["4"] ]
我想将内部字符串转换为数字,同时保留列表结构。因此,例如将成为:
[ [1 2 3] [4] ]
我猜我需要map
和read-from-string
的组合(如lput
和foreach
,也许还有其他列表操作由于嵌套),但我不能让它工作。
任何想法?
答
实质上,将每个列表映射到仅具有int值的映射列表。 尝试以下操作:
show map [ map [ read-from-string ? ] ?] [ ["1" "2" "3"] ["4"] ]
答
只是为了好玩,这里是可以转换嵌套级别的任意数量的版本:
to-report read-from-list [ x ]
report ifelse-value is-list? x
[ map read-from-list x ]
[ read-from-string x ]
end
例子:
observer> print read-from-list [ ["1" "2" "3" ] ["4" [ "5" "6" ] ] ]
[[1 2 3] [4 [5 6]]]
感谢,我会去并将其编码为真实的例子,看看我如何去 – JenB
你实际上并不需要围绕'read-from-string'方括号。你可以做'映射[map map-from-string?] ...'。 –