2016-06-30 5 views
1

Ich habe zwei Listen in RExtract Elemente aus einer Liste Index aus einer anderen Liste unter Verwendung von R unter Verwendung von

1) a<-as.list(c(2,4,6,10))

int : 2 
int : 4 
int : 6 
int : 10 

2) b<-as.list(c("a","b","c","d","e","f","g","h","i","j","k","l","m"))

chr : "a" 
chr : "b" 
chr : "c" 
chr : "d" 
chr : "e" 
chr : "f" 
chr : "g" 
chr : "h" 
chr : "i" 
chr : "j" 
chr : "k" 
chr : "l" 
chr : "m" 

Und ich brauche eine Ausgang mit den Intervallen von Liste eins 2: 4, 6:10

b c d f g h i j 
+1

Bitte geben Sie die tatsächliche Struktur dieser Beispiele als Daten, die wir verwenden können, kann kopieren. Sie können die Ergebnisse von 'dput' einfügen, wenn es einfacher ist. – lmo

Antwort

1

sehen Sie dieses

a <- list(2,4,6,10) 
b <- lapply(1:13,function(x) letters[x]) 
M <- matrix(unlist(a),byrow = T,ncol=2) 
unlist(b)[unlist(mapply(seq,M[,1],M[,2]))] 

Dank @ Psidom Kommentar, wir

b[unlist(Map(seq, a[c(T, F)], a[c(F, T)]))] 

statt

M <- matrix(unlist(a),byrow = T,ncol=2) 
unlist(b)[unlist(mapply(seq,M[,1],M[,2]))] 
+1

Eine andere Möglichkeit, um eine Matrix aufzubauen, wäre 'b [unlist (Karte (seq, a [c (T, F)], a [c (F, T)]))]. – Psidom

Verwandte Themen