我正在與R處理一個項目。該項目是給定節點之間邊緣的大數據,以測試測試邊緣是否爲真。在項目中,基本元素應該是「邊緣」,這就是我們如何判斷給定的邊緣是否真實。所以問題來了。我們創建了一個「from」節點和「to」節點兩列的數據框來表示邊,這就是edgesData
,然後我們使用igraph創建了一個圖,它是。我們可以計算出相似度某兩個節點,使用如何避免R中的循環?
similarity.jaccard(graph, vids = V(graph)[edgesData[1,1], edgesData[1,2]])
但是我們怎麼能得到所有邊的桌子嗎?我試過
similarity.jaccard(graph, vids = V(graph)[edgesData[,1], edgesData[,2]])
,但沒有奏效。此外,我已經試過
similarity.jaccard(graph, vids = E(graph))
它沒有工作,要麼。一個顯而易見的方法是使用循環來從數據框中檢索每一行,但這似乎是一個糟糕的主意。所以,任何人都可以給我一些建議嗎?謝謝!
編輯: 好,好像問題是有點混亂,所以我寫了這一個循環的解決方案:
tpData <- edgesData
simList <- c()
while(nrow(tpData) > 0) {
v1 <- tpData[1,1]
v2 <- tpData[1,2]
simList <- c(simList, similarity.jaccard(graph, V(graph)[v1, v2])[1,2])
tpData <- tpData[-1,]
}
在這個代碼中,我試圖讓兩個元素[,1] ,[,2],然後計算相似度。由於行數接近2000萬,所以需要永遠完成這項工作。有一個更好的辦法來解決這個問題。有人能幫助我嗎?謝謝。
也許一個可重複的例子可以幫助嗎? – Tensibai
我不知道你想要什麼,在節點(頂點)和邊緣之間計算jaccard相似度,只需輸入:'similarity.jaccard(graph)',就可以從所有節點獲得它,起來的邊緣和頂點,所以你想要什麼?你可以輸入'E(graph)'得到所有邊的列表,但是你想要什麼類型的表?同一組頂點之間是否存在多個邊?如果沒有,那麼一張桌子的邊緣會讓人感覺不到 – grrgrrbla
對不起。這是我的。我有一個邊緣列表。然後我用它來創建一個圖。我想要的是,從列表中獲得每對節點的相似性。 – user3928256