【问题标题】:Create a list of matrices given initial list and specific transformation in R在给定初始列表和 R 中的特定转换的情况下创建矩阵列表
【发布时间】:2017-11-07 08:12:41
【问题描述】:

我有一个长度为 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 的最后(10 个)元素。 (就像for (j in 1:10) 没有运行,但需要j=10

知道如何实现吗?

【问题讨论】:

  • 您的mylist 似乎是vector 而不是list,另外,temp 是什么?

标签: arrays r list matrix lapply


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多