Vergleichen von zwei Listen [R]
Ich habe zwei ziemlich lange Listen (beide sind 232000 Zeilen). Wenn Sie versuchen zum ausführen von Analysen mit Hilfe der beiden, R gibt mir eine Fehlermeldung, dass einige Elemente in einem Listen sind nicht in den anderen (für einen bestimmten code ausführen, beide Listen müssen genau gleich sein). Ich habe Folgendes getan, um zu versuchen und zu entziffern:
#In Both
both <- varss %in% varsg
length(both)
#What is in Both
int <- intersect(varss,varsg)
length(int)
#What is different in varss
difs <- setdiff(varss,varsg)
length(difs)
#What is different in varsg
difg <- setdiff(varsg,varss)
length(difg)
Ich glaube, ich habe den code richtig, aber mein problem ist, dass die Ergebnisse aus dem obigen code werden nicht nachgeben, was ich brauche. Zum Beispiel, für both <- varss %in% varsg
ich nur einen einzigen FALSE
. Tun meine beiden Listen müssen in einer bestimmten Klasse, um für diese zu arbeiten? Ich habe versucht data.frame
, list
und character
. Nicht sicher, ob alles große wie ein function
angewendet werden muss.
Nur zu geben ein wenig mehr Informationen über meine Listen, beide sind eine Liste von SNP-Namen (genetische Daten)
Edit:
Habe ich geladen, diese beiden Dateien zu readRDS()
und nicht sicher, ob das was zu einigen Problemen. Wenn Sie versuchen, verwenden Sie einfach varss[1:10,]
bekomme ich die folgende info:
[1] rs41531144 rs41323649 exm2263307 rs41528348 exm2216184 rs3901846
[7] exm2216185 exm2216186 exm2216191 exm2216198
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs9990343
Habe ich wenig Erfahrung mit RData
Dateien, also nicht sicher, ob das ein problem ist oder nicht...
Gleiche passiert mit varsg[1:10,]
:
[1] exm2268640 exm41 exm1916089 exm44 exm46 exm47
[7] exm51 exm53 exm55 exm56
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs999943
varss
und varsg
sind? Am besten mit einem tool wie ?dput
Das wird schwer herauszufinden. Aber lassen Sie mich Ihnen ein wenig mehr info im text...
Können Sie bitte das output-Werte für alle diese:
class(varss)
, class(varsg)
, length(varss)
, length(varsg)
, sum(both)
, length(int)
, length(difs)
, length(diff)
class(varss) = "data.frame"
;class(varsg) = "data.frame"
; length(varss) = 1
;length(varsg)=1
;sum(both)= 0
; length(int)=0
;length(difs)=1
;length(diff)=1
InformationsquelleAutor user2726449 | 2014-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Funktionen, die Sie gezeigt haben, spielen nicht gut mit Listen oder Daten.frames, e.g:
Ich schlage vor, Sie wechseln zu Vektoren by doing:
1
bei der Verwendunglength
. nur mitintersect(varss,varsg)
generiert eine lange Liste... was aber nicht gleich1
... so neugierig, ob es ist etwas grundlegend falsch hier.Danke!", unlisting" es hat funktioniert. Ich kann jetzt erkennen die SNPs, die nicht gleich sind. Meine Analyse sagte mir, dass die 13 nicht übereinstimmen und jetzt tun, hat oben festgestellt, die 13.
InformationsquelleAutor flodel