2016-04-29 5 views
0

私が研究しているFacebookページの各ペアに対して計算された数値を配列/行列に書き込む作業を自動化しようとしています。私は、ページの各ペアの数を計算して配列を塗りつぶすことで、これを手動で行うことができます。しかし、私はこれを自動的に行う機能を理解することはできません。手動充填の例:RSLの計算で生成された数値で配列/行列を塗りつぶす

サンプル:

   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 

計算と手動充填:

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

アムIおよび/またはJ上のforループ依存で唯一の値が出力場所であることを考える中、私は間違っている:だから、「ル」の行のために、次のようなものが必要だろうか?ループの実行ごとにle関数に異なる入力変数が必要だと思っていますが、どこでそれが起こっているのかわかりません。何か不足していますか? – rosscova

+0

あなたが正しいです、問題は私がその仕事をする方法を見つけることができないということです。ループのすべての反復で、異なるメディアのペアを使用してその価値を計算しました。たとえば、a = media1、b = media2、計算して配列に挿入します。次に、a = media1、b = media3、計算して配列に挿入するなどです。 – Dalibor

答えて

0

私はあなたの計算に「メディア」から抽出された変数を追加したい正確にどのようにわからないんだけど、あなたは、たとえば、内の特定のリファレンスとしてこれらの値を参照する必要があります:

media[i] 

いうより:

media[1] 

そのように、私は通常「1を使用すると思いますが、ループコール(あなたのケースでは「SEQ(メディア)」のために与えられたすべての可能な値から「i」の意志サイクル:長さ(メディア) "自分自身)。

le <- mf(a=media[i], b=media[j]) 
関連する問題