J'utilise R, et je suis un débutant. J'ai deux grandes listes (30K éléments chacun). On est appelé descriptions
et où chaque élément est (peut-être) une chaîne de tokenized. L'autre est appelé probes
où chaque élément est un nombre. Je dois faire un dictionnaire qui mappe probes
à quelque chose dans descriptions
, si ce quelque chose est là. Voici comment je vais à ce sujet:Remplacement R-thonic pour simple pour les boucles contenant une condition
probe2gene <- list()
for (i in 1:length(probes)){
strings<-strsplit(descriptions[i]), '//')
if (length(strings[[1]]) > 1){
probe2gene[probes[i]] = strings[[1]][2]
}
}
Ce qui fonctionne très bien, mais il semble lent, beaucoup plus lent que le python à peu près équivalent:
probe2gene = {}
for p,d in zip(probes, descriptions):
try:
probe2gene[p] = descriptions.split('//')[1]
except IndexError:
pass
Ma question: est-il un « R-thonic » façon de faire ce que je suis en train de faire? Le R manual entry on for loops suggère que de telles boucles sont rares. Y a-t-il une meilleure solution?
Edit: typique bonne "description" ressemble à ceci:
"NM_009826 // Rb1cc1 // RB1-inducible coiled-coil 1 // 1 A2 // 12421 /// AB070619 // Rb1cc1 // RB1-inducible coiled-coil 1 // 1 A2 // 12421 /// ENSMUST00000027040 // Rb1cc1 // RB1-inducible coiled-coil 1 // 1 A2 // 12421"
une mauvaise « description: ressemble à ce
"-----"
mais il peut facilement être un autre non-very- Chaîne utile: chaque sonde est simplement un nombre Les vecteurs probe
et description
ont la même longueur, et correspondent complètement l'un à l'autre, c'est-à-dire probe[i]
et
"R-thonic" :) Ça ne devrait pas être Ric? – Skilldrick
Un petit échantillon de données serait utile. – Shane
C'est définitivement "piraté". – Harlan