2016-04-29 52 views
0

我正在嘗試自動填充數組/矩陣,其中計算出的數字是爲我研究的每對Facebook頁面計算的。我可以通過計算每對頁面的數量來手動完成,然後填充數組。然而,我無法想象一個能夠自動完成這個功能的功能。手動填充物的例子:通過計算生成的數字填充數組/矩陣

   from_id   from_name  x$likes[, 2] 
56924 202099276507678    24.hu 1502184033424382 
79551 202099276507678    24.hu 478120425722688 
20007 202099276507678    24.hu 910595435726013 
574961 543788999005363    ORIGO 918616121589753 
172612  308921667047    168 Óra 1225006607529482 
46408  131283758531     HVG 638659559622773 
394136 114928525189230  Népszava Online 1021414547939024 
20310 202099276507678    24.hu 861515480644047 
167859  308921667047    168 Óra 2004057346485378 
197230 224510837580985    mno.hu 10207173898839986 
51713 202099276507678    24.hu 1094966453889403 
342693 543788999005363    ORIGO 1065689316812793 
413020 224510837580985    mno.hu 1158229737540788 
267020 131059950261988 RTL Klub official 946100758842247 
89410 560525343980775   Index.hu 815605101902725 
294715 114324688634857    atv.hu 1152065254825682 
132637 731815466835029 The Budapest Beacon 1125893650794568 
389574  308921667047    168 Óra 954405207961450 
928211 114324688634857    atv.hu 1116577471733852 
118642  131283758531     HVG 1178121435555294 
152663 543788999005363    ORIGO 690312584444943 
29586 560525343980775   Index.hu 1768701566700483 
2066110 248494883317     TV2 1031371220285102 
657501  308921667047    168 Óra 1740704569476190 
400491 560525343980775   Index.hu 1083676221692203 

計算和手動填充:

RSL的樣品

media <- unique(rsl$from_name) 
v<- matrix(nrow=length(media), ncol=length(media)) 
colnames(v) <- c(media) 
rownames(v) <- c(media) 

mf <- function(a, b) { 
    ua <- rsl[rsl$from_name==a, "x$likes[, 2]"] 
    ub <- rsl[rsl$from_name==b, "x$likes[, 2]"] 
    pa <- length(ua) 
    pb <- length(ub) 
    pab <- length(intersect(ua,ub)) 
    return(c(pa,pb,pab)) 
    } 

le <- mf(a=media[1], b=media[1]) 
M <- 2200000 

NFD <- (max(log10(le[1]), log10(le[2])) - log10(le[3]))/(log10(M) - min(log10(le[1]), log10(le[2]))) 
v[1,1] <- NFD 

我只想基本上改變所述一對中的「文件」,然後將所得在矩陣中的值。

我想是這樣的:

v <- matrix(NA, nrow=length(media), ncol=length(media)) 
for (i in seq(media)) { 
    for (j in seq(media)) { 
    le <- mf(a=unique(media), b=unique(media)) 
    NFD <- (max(log10(le[1]), log10(le[2])) - log10(le[3]))/(log10(M) - min(log10(le[1]), log10(le[2]))) 
    v[i,j] <- NFD 
    } 
    } 
v 

顯然,是一個錯誤,但我不能讓它工作,我想。謝謝你的幫助。

+0

我錯了,認爲你的for循環依賴於我和/或j的唯一值是輸出位置?我假設你需要不同的輸入變量給你的le函數,但是我沒有看到發生了什麼。我錯過了什麼嗎? – rosscova

+0

你說得對,問題是我找不到如何做這項工作的方式。我是爲循環中的每一次迭代使用不同的媒體對並計算它們的值。例如,a = media1,b = media2,計算並插入數組中。其次,a = media1,b = media3,計算並插入數組中等等。 – Dalibor

回答

0

我不知道你到底如何想從「媒體」中提取的變量添加到您的計算,但你需要參考這些值內的特定參考,例如:

media[i] 

而不是:

media[1] 

這樣一來,「我」將循環在for循環中調用給(你的情況「SEQ(媒體)」所有可能的值,但我通常用「1 :長度(媒體)「我自己)。所以,對於「樂」線,你需要這樣的東西:

le <- mf(a=media[i], b=media[j])