提问人:12666727b9 提问时间:3/26/2023 更新时间:3/26/2023 访问量:38
如何对一个列表中的元素进行成对比较
How to make paired comparison for elements in one list
问:
正如你所看到的,我有一个包含四个模型的列表,我应该进行比较:
- 第一个与第二个
- 第二个与第三个
- 第三个与最后一个
因此,我通过创建一个用于配对比较的列表来继续执行以下代码:
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
这怎么可能?如何提高指数?如果没有解决方案,您能提出一些替代方案吗?
谢谢
答:
1赞
akrun
3/26/2023
#1
只是赋值索引是基于向量的值。相反,循环列表的顺序,因此可以将输出分配给启动列表“比较”的每个元素comparison
list_comparison
for(i in seq_along(list_comparison))
{
tmp <- list_comparison[[i]]
comparison[[i]] <- summary(compareFit(models[[tmp[1]]],
models[[tmp[2]]]))
}
除了启动 a 和 assign,我们还可以直接使用list
list
lapply
comparison <- lapply(list_comparison, function(x)
summary(compareFit(models[[x[1]]],
models[[x[2]]]))
)
评论
for(i in seq_along(list_comparison))
comparison[[i]] <-summary(compareFit(models[[list_comparison[[i]][1]]], models[[list_comparison[[i]][2]]]))