在R中创建矩阵列表

时间:2016-08-05 21:48:26

标签: r loops matrix

使用for循环,我生成了一个标记为X_1,X_2,X_3等的矩阵列表。

我现在正试图在每个矩阵上运行一系列函数,然后我写了另一个for循环:

for (i in matrices) {
            df <- count(i)
            df$count <- df$freq
            df$freq <- df$count/nrow(i)  #freq = pi in H1 equation
            for (j in names){
            assign(paste("hap",j,sep="."), df)      
            }
        }

我尝试使用序列脚本生成矩阵列表:

matrices <- (paste("X",seq(1,nrow(windows)), sep="_"))

导致输出:“X_1”“X_2”“X_3”“X_4”“X_5” 虽然这是一个列表,但它只是一个字符列表,实际上并没有引用矩阵。如果我手动输入矩阵名称列表似乎有效:

matrices <- list(X_1, X_2, X_3, X_4, X_5, ...)

但我希望自动执行此操作,以便将脚本应用于大型数据集。 如果我尝试将这些与

结合起来
matrices <- list(paste("X",seq(1,nrow(windows)), sep="_"))

我得到与第一个脚本相同的东西:“X_1”“X_2”“X_3”“X_4”“X_5”

有没有办法生成矩阵的顺序列表,以便它们可以在for循环中使用?

我也尝试过lapply,但是我对这个不太熟悉而不是循环而且我无法获得我想要做的功能以便在lapply中工作。

1 个答案:

答案 0 :(得分:1)

我会通过在实际创建每个矩阵时将每个矩阵添加到列表中来解决这个问题,例如

lst <- list(X_1, X_2, ..., X_N)

然后,当您想要将函数应用于每个矩阵时,您只需使用lapply,例如

result <- lapply(lst, function(x) fun(x))

其中fun()将矩阵作为输入并对其执行某些操作。