【问题标题】:creating a list of matrices in R在 R 中创建矩阵列表
【发布时间】:2016-08-05 21:48:26
【问题描述】:

使用 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 中使用我想做的功能。

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    我会在您实际创建每个矩阵时将每个矩阵添加到列表中,例如

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

    然后,当你想对每个矩阵应用一个函数时,你可以简单地使用lapply,例如

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

    fun() 将矩阵作为输入并对其进行处理。

    【讨论】:

    • 您可以使用mgetlst &lt;- mget(paste0("X_", 1:N)) 其中N &lt;- 5
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2012-11-25
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多