簡體   English   中英

從Netlogo社交網絡創建邊緣列表

[英]Creating edge list from Netlogo social network

我是Netlogo的新手,並一直用它來進行基本的網絡分析。 我創建了一個由5種不同的海龜品種組成的社交網絡。 為了在另一個程序中繼續我的分析,我需要創建一個邊緣列表(網絡中所有連接節點的兩列列表)。 因此,第一列將具有品種和編號(例如演員1),第二列將列出演員1的聯系人之一(例如[Actor1,Actor2] [演員1,導演5] [演員1,制片人1] ... .......)輸出需要是txt或csv文件,以便我可以輕松地將其導入EXCEL。

我試過了:

   to make-edgelist
    file-open "Test.txt"
     ask links [file-show both-ends]
       ask turtles[file-show who]
    file-close
end

問題是'兩端'只報告誰的號碼,而不是品種。 我可以通過使用ask turtles [file-show who]獲得該品種,但是這會將標識附加到edgelist的末尾,這意味着要以正確的格式進行操作。 有沒有人有關於如何用品種+誰編號建立邊緣列表的任何建議? 我覺得我可能錯過了一些簡單的東西,但我是Netlogo的新手。 謝謝!

csv擴展使這個單行。 假設您的代碼頂部有extensions [ csv ] ,您可以這樣做:

csv:to-file "test.csv" [ [ (word breed " " who) ] of both-ends ] of links

如果您需要列標題,可以使用fput添加它們,例如:

csv:to-file "test.csv"
  fput ["source" "target"]
  [ [ (word breed " " who) ] of both-ends ] of links

但請注意, both-ends都是一個始終以隨機順序訪問的代理集,因此“source”和“target”在這種情況下不是很有意義。

如果您有定向鏈接,並且方向很重要,您可以使用這個稍微復雜的版本保留它:

csv:to-file "test.csv"
  fput ["source" "target"]
  [ map [ t -> [ (word breed " " who) ] of t ] (list end1 end2) ] of links

我假設您用於分析的任何程序都可以根據需要組織和重新排列您的對,因此只要記錄了所有對,您的網絡就可以構建得很好,無論順序如何。 你使用問題ask-linksboth-ends的方法很好,並且需要進行一些調整(主要是使用breed原語讓烏龜在輸出中包含它們的品種。這是一個例子:

to pairs-out

  file-open "test.csv"
  file-type (word "End_1, " "End_2,\n" )
  ask links [
    ask both-ends [
      file-type (word breed " " who ",")
    ]
    file-type "\n"
  ]
  file-close

end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM