2017-06-06 32 views
0

我有一個長度爲200的列表,其中每個元素是一個整數列表。創建一個給定的初始列表和特定轉換的矩陣列表R

然後,我想爲每個元素創建一個表,並最終創建一個長度相同的列表,其中每個元素都是一個矩陣。

比方說,爲了簡單起見,我的清單是mylist = c(1001:1200)

現在我要爲每一個元素的變換,例如: 鑑於

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

其中ab是長度爲10的名單,我想申請

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

我的原始列表中的每個元素(滿分爲200)

我試過使用兩個for循環,但它沒有完成這項工作。

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 
    } 
} 

特別我得到長度200,其中對於MYLIST的每個元素(1:200)的列表我得到從以下變換

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

導致...

等這意味着它僅考慮列表a和b中的最後(10個)元素。 (這就像for (j in 1:10)沒有運行,但需要j=10

任何想法如何實現?

+1

你的'mylist'似乎是'vector'而不是'list',另外,什麼是'temp'? – akrun

回答

0

在你的代碼只定義元素i的temp。這就是爲什麼你只獲得最後的值,因爲它重新寫入。試試這個:

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 
    } 
}