2016-03-23 9 views
0

Ich würde eine Frage stellen. Es wird sehr hilfreich sein, wenn Sie zu versuchen, etwas dagegen .. Thankyou Ich habe einen Vektor hier ....Passt die Kombination aber wie das Komma? Ich bin verwirrt

[1] "I1,I2" "I1,I3" "I1,I4" "I1,I5" "I2,I3" "I2,I4" 
[7] "I2,I5" "I3,I4" "I3,I5" "I4,I5" 

Dann Ich möchte dies unten durch den Vektor passen ...

[1] "I1,I2,I5" "I2,I4"  "I2,I3"  
[4] "I1,I2,I4" "I1,I3"  "I2,I3"  
[7] "I1,I3"  "I1,I2,I3,I5" "I1,I2,I3" 


hits <- sapply(1:length(a.new.list), function(j) pmatch(result,a.new.list[j])) 
colnames(hits) <- a.new.list 
rownames(hits) <- result 

apply(hits,1, sum,na.rm=TRUE) 

I1,I2 I1,I3 I1,I4 I1,I5 I2,I3 I2,I4 I2,I5 I3,I4 I3,I5 I4,I5 
4  2  0  0  2  1  0  0  0  0 

Aber was ich erwartet habe, ist nicht im Ergebnis.

I1,I2 I1,I3 I1,I4 I1,I5 I2,I3 I2,I4 I2,I5 I3,I4 I3,I5 I4,I5 
4  4  1  2  4  1  2  0  1  0 

Wenn die Kombination mit den einem nicht weiter, sagte der Code, dass es nicht passen ... , aber das ist nicht das, was ich brauche.

Danke für Ihre Hilfe. Mit freundlichen Grüßen

+0

ich kann, aber für das, was? – ILoveThisName

Antwort

1

Dieser Ansatz verwendet die verwendete melt.list Methode von reshape2. Nach dem Erstellen von zwei Datenframes aus der Zeichenfolge teilen wir die Zeichenfolge zusammen und prüfen die Anzahl der übereinstimmenden Gruppen. Der Code ist auf Suchpaare zugeschnitten. Wenn die Längen ändern müssen sie bei len geändert werden:

library(reshape2) 
len <- 2 
dfs <- lapply(list(result, a.new.list), 
       function(x) melt(strsplit(x, ","))) 
m <- merge(dfs[[2]], dfs[[1]], by=1) 
f <- function(n) sum(aggregate(value~L1.y, m[m$L1.x == n,], 
       function(x) length(unique(x)) == len)$value) 
setNames(sapply(1:length(a.new.list), f), a.new.list) 
#I1,I2 I1,I3 I1,I4 I1,I5 I2,I3 I2,I4 I2,I5 I3,I4 I3,I5 I4,I5 
# 4  4  1  2  4  2  2  0  1  0 

Daten

a.new.list <- scan(what="character", text='"I1,I2" "I1,I3" "I1,I4" "I1,I5" "I2,I3" "I2,I4" "I2,I5" "I3,I4" "I3,I5" "I4,I5"') 
result <- scan(what="character", text=' "I1,I2,I5" "I2,I4"  "I2,I3"  
"I1,I2,I4" "I1,I3"  "I2,I3"  
       "I1,I3"  "I1,I2,I3,I5" "I1,I2,I3" ') 
Verwandte Themen