Salut à tous,

Je suis face à un problème de manipulation de données: je dois importer un fichier .txt (from_soft.txt, qui est l'output d'un freeware "CFINDER" qui recherche les 'cliques' dans un network). Lorsqu'on ouvre le fichier 'from_soft.txt' dans notepad, il est comme ceci:
[..]output/from_soft:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
# text-text-text-text-text-text-text-text-text-text-
# text-text-text-text-text-text-text-text-text-text-
# text-text-text-text-text-text-text-text-text-text-
# text-text-text-text-text-text-text-text-text-text-
 
1: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE
2: SpeciesA SpeciesC SpeciesE SpeciesD SpeciesF SpeciesG SpeciesH
3: SpeciesB SpeciesC SpeciesF
4: SpeciesB SpeciesC SpeciesD SpeciesF SpeciesH
[...]
J'arrive à l'importer dans R grâce à readLines:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from_soft<-readLines("from_soft.txt",n=-1,ok=T,warn=T,encoding="unknow",skipNul=F)
Et j'efface les premières lignes comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from_soft<-as.data.frame(from_soft)[-(1:5),]
J'obtiens une table 'from_soft' comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
head(from_soft)
[1] 0: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE   1: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE   2: SpeciesA SpeciesB SpeciesC SpeciesD SpeciesE  
[4] 3: SpeciesB SpeciesC SpeciesD SpeciesF SpeciesH [...]
D'un autre côté j'ai une table référentielle ('ref') qui indique la valeur de chaque paire d'espèces. Elle est structurée comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
print(ref)
3324   SpeciesA  SpeciesB       1
3325   SpeciesA  SpeciesC       2
3326   SpeciesA  SpeciesD      12
3327   SpeciesA  SpeciesE       1
3328   SpeciesA  SpeciesF      71
3329   SpeciesA  SpeciesG       6
3330   SpeciesA  SpeciesH      15
3331   SpeciesB  SpeciesC       2
3332   SpeciesB  SpeciesF       4
3333   SpeciesB  SpeciesD      17
[...]
D'un point de vue concret, chaque ligne de 'from_soft' correspond à une 'clique' dans le graph du network. Cela signifie que chaque espèce d'une ligne est interconnectée (et donc forme des paires) à (avec) toutes les autres.

Je voudrais donc calculer pour chaque ligne de 'from_soft' la moyenne de chaque paire.

En exemple, pour la ligne 1: de 'from_soft', voici toutes les paires existantes (qui sont de fait aussi existantes dans la table 'ref') :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1: SpeciesASpeciesB|SpeciesASpeciesC|SpeciesASpeciesD|SpeciesASpeciesE|SpeciesBSpeciesC|SpeciesBSpeciesD|SpeciesBSpeciesE|SpeciesCSpeciesD|SpeciesCSpeciesE|SpeciesDSpeciesE|
Chaque paire à une valeur dans 'ref' et j'aimerais avoir comme résultat une table qui ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
1: 3.5 (= moyenne de toutes les paires dans la 'clique' '1:')
2: 4.2
3: 1.5
4: 6
[...]
Auriez-vous quelques suggestions?

Merci pour le coup de main!

R.