给出初始列表和R中的特定转换的矩阵列表

时间:2017-06-06 10:42:51

标签: arrays r list matrix lapply

我有一个长度为200 mylist的列表,其中每个元素都是一个整数列表。

然后我想为每个元素创建一个表,最终创建一个长度相同的列表,其中每个元素都是一个矩阵。

让我们说为了简单起见,我的列表是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中的最后一个(十分之一)元素。 (就像for (j in 1:10)没有运行,但需要j=10

知道如何实现吗?

1 个答案:

答案 0 :(得分:0)

在您的代码中,您只定义了variables[i]的元素i。这就是为什么你只获得最后一个值,因为它重写了。试试这个:

temp