2017-06-06 3 views
0

Ich habe eine Liste der Länge 200 mylist, wobei jedes Element eine ganze Zahl ist.Erstellen Sie eine Liste der Matrizen bei der ersten Liste und spezifische Transformation in R

Dann möchte ich eine Tabelle für jedes Element erstellen und schließlich eine Liste mit der gleichen Länge erstellen, wobei jedes Element eine Matrix ist.

Sagen wir aus Gründen der Einfachheit, dass meine Liste mylist = c(1001:1200) ist.

jetzt will ich eine Transformation für jedes Element schaffen, zum Beispiel: gegeben, dass

set.seed(222) 
a = sample(length(temp), 10) 
b = sample(length(temp), 10) 
c = 211 

wo a und b sind Listen der Länge 10, I

(a * mylist[i] + b) %% c 

anwenden möchten in jedes Element (von 200) für meine ursprüngliche Liste

Ich versuchte, mit zwei for-Schleifen, aber es macht die Arbeit nicht.

temp <- vector(mode='array', length =1) 

for (i in 1:length(mylist)) { 
    for (j in 1:10) { 
    temp[[i]] =(a[j] * mylist[[i]] + b[j]) %% c 
    } 
} 

besonders bekommen ich eine Liste der Länge 200, wobei für jedes Element von mylist (1: 200) I aus der folgenden Transformation Ergebnis erhalten

(a[10]*mylist[[1]]+b[10])%%c 
(a[10]*mylist[[2]]+b[10])%%c 

...

etc, Das bedeutet, dass nur die letzten (von 10) Elemente der Listen a und b berücksichtigt werden. (Es ist wie for (j in 1:10) nicht ausgeführt wird, sondern nimmt j=10

Jede Idee, wie das realisieren?

+1

Ihre 'mylist' scheint ein' vector' zu sein anstelle von 'list', Was ist' temp'? – akrun

Antwort

0

In Ihrem Code Sie definieren das Element i von temp. Deshalb sollten Sie nur den letzten Wert erhalten, weil Es versucht das:

temp <- array(NA, c(length(mylist),10)) 

for (i in 1:length(mylist)) { 
    for (j in 1:10) { 
    temp[[i,j]] =(a[j] * mylist[[i]] + b[j]) %% c 
    } 
} 
Verwandte Themen