【问题标题】:How to create a matrix or list of results using a loop?如何使用循环创建矩阵或结果列表?
【发布时间】:2021-06-03 02:42:32
【问题描述】:

我正在执行一个循环来计算 4 个表达式的值。我的循环是:

for (i in c(1:14)){
 VV1a <- round((db$Ya1[i]^Comb$Sigma)+ (1/(exp(log(1/p1a)^Comb$Alpha)))*
                       ((db$Xa1[i]^Comb$Sigma)-(db$Ya1[i]^Comb$Sigma)),1)
 VV1b <- round((db$Yb1[i]^Comb$Sigma)+ (1/(exp(log(1/p1b)^Comb$Alpha)))*
                       ((db$Xb1[i]^Comb$Sigma)-(db$Yb1[i]^Comb$Sigma)),1)
 VV2a <- round((db$Ya2[i]^Comb$Sigma)+ (1/(exp(log(1/p2a)^Comb$Alpha)))*
                       ((db$Xa2[i]^Comb$Sigma)-(db$Ya2[i]^Comb$Sigma)),1)
 VV2b <- round((db$Yb2[i]^Comb$Sigma)+ (1/(exp(log(1/p2b)^Comb$Alpha)))*
                       ((db$Xb2[i]^Comb$Sigma)-(db$Yb2[i]^Comb$Sigma)),1)
 
 }

现在对于每个单数,我有 2105401 个值。但是,每次 R 覆盖元素时使用此语句(当然)。最后,我的元素 (VV1a, ....) 只包含最后一个循环(即 i = 14)。

如何保留所有计算?更具体地说:理想情况下,对于每一个,我都希望有一个计算值的向量。

【问题讨论】:

    标签: r loops matrix utility


    【解决方案1】:

    使用list()

    假设您对 VV1a、VV1b 等进行不同的计算,您可以将每次迭代 i 的结果数组存储为列表。

    results <- list()
    for (i in c(1:14)){
     results[["VV1a"]][[i]] <- list(your_calculations_which_result_in_a_vector)
     ....
     
     }
    

    【讨论】:

    • 谢谢它有效。但是,很难使用列表中包含的结果进行后续计算。
    • 好吧,如果你提供给我更多关于变量的上下文,我可以帮助你。也许我们不需要“VV1A”名称或其他东西,我们可以以更简单的方式存储它们。无论如何,你能解释一下为什么很难以这种方式索引结果吗?这对我来说似乎相当简单。
    • @RuggieroRippo 你有什么建议吗?
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多