如何对一个列表中的元素进行成对比较

How to make paired comparison for elements in one list

提问人:12666727b9 提问时间:3/26/2023 更新时间:3/26/2023 访问量:38

问:

正如你所看到的,我有一个包含四个模型的列表,我应该进行比较:

在此处输入图像描述

  1. 第一个与第二个
  2. 第二个与第三个
  3. 第三个与最后一个

因此,我通过创建一个用于配对比较的列表来继续执行以下代码:

comparison = vector('list', length = 3)
list_comparison = list(c(1,2), c(2,3), c(3,4)) 

for (i in list_comparison){
  comparison[i] = summary(compareFit(models[[i[1]]], models[[i[2]]]))
}

但是我无法停止循环的方式,以重新制作两次上次比较(3 对 4)并且在列表中,我发现两次结果相同。

length(comparison)
[1] 4

这怎么可能?如何提高指数?如果没有解决方案,您能提出一些替代方案吗?

谢谢

R 列表 for 循环 迭代 比较

评论

0赞 akrun 3/26/2023
我认为您需要遍历序列,即 ,然后使用for(i in seq_along(list_comparison))comparison[[i]] <-summary(compareFit(models[[list_comparison[[i]][1]]], models[[list_comparison[[i]][2]]]))
0赞 12666727b9 3/26/2023
伟大。效果非常好。谢谢

答:

1赞 akrun 3/26/2023 #1

只是赋值索引是基于向量的值。相反,循环列表的顺序,因此可以将输出分配给启动列表“比较”的每个元素comparisonlist_comparison

for(i in seq_along(list_comparison))
{
tmp <- list_comparison[[i]]
comparison[[i]] <- summary(compareFit(models[[tmp[1]]], 
         models[[tmp[2]]]))
}

除了启动 a 和 assign,我们还可以直接使用listlistlapply

comparison <- lapply(list_comparison, function(x)
                summary(compareFit(models[[x[1]]],
                          models[[x[2]]]))
        )