2016-04-14 4 views
3

Ich übertrage zwischen NetLogo und igraph (in R). Einige der Informationen, die von igraph zurückgegeben werden, sind verschachtelte Listen von Strings mit zwei Ebenen. Ein typisches Beispiel sieht so aus:Netlogo Zeichenfolge in Zahlen in verschachtelten Listen konvertieren

[ ["1" "2" "3"] ["4"] ] 

Ich möchte die internen Strings in Zahlen umwandeln, während die Listenstruktur beibehalten wird. So würde das Beispiel werden:

[ [1 2 3] [4] ] 

ich brauche ich eine Kombination aus map und read-from-string (und vielleicht auch anderer Liste Manipulation wie lput und foreach aufgrund der Verschachtelung) bin zu raten, aber ich kann einfach nicht damit es funktioniert.

Irgendwelche Ideen?

Antwort

5

Im Wesentlichen jede Liste einer Mapping-Liste mit nur int-Werten zuordnen. Versuchen Sie Folgendes:

show map [ map [ read-from-string ? ] ?] [ ["1" "2" "3"] ["4"] ] 
+0

Dank, werde ich gehen und code es für das reale Beispiel und sehen, wie ich gehe – JenB

+1

Sie brauchen eigentlich nicht die eckigen Klammern um die 'Read-from-string'. Sie können einfach 'map [map read-from-string?] ... '. –

4

Just for fun, hier ist eine Version, die eine beliebige Anzahl von verschachtelten Ebenen umwandeln kann:

to-report read-from-list [ x ] 
    report ifelse-value is-list? x 
    [ map read-from-list x ] 
    [ read-from-string x ] 
end 

Beispiel:

observer> print read-from-list [ ["1" "2" "3" ] ["4" [ "5" "6" ] ] ] 
[[1 2 3] [4 [5 6]]]