gpt4 book ai didi

R排列向量列表

转载 作者:行者123 更新时间:2023-12-05 09:31:44 26 4
gpt4 key购买 nike

假设我有一个像这样的向量列表:

list.of.vec <- data.frame(id = c(1,2,3,4)) %>% 
mutate(a = list(list(c(1,2,3), c(2,3,4)), list(c(2,4,5), c(1,3,4)), list(c(1,2,3), c(4,3,4)), list(c(3,2,3), c(2,3,4))))

如何排列a,使得在每对向量中,第一个值较大的向量排在第一位?例如,如果有一个列表 c(1,2,3), c(2,3,4),它应该变成 c(2,3,4), c(1,2,3)。如果第一个值相等,那么它会查看下一个值。

最佳答案

您可以使用 -

list.of.vec$a <- lapply(list.of.vec$a, function(x) {
inds <- match(TRUE, x[[1]] != x[[2]])
if(x[[1]][inds] > x[[2]][inds]) x else rev(x)
})

list.of.vec$a

#[[1]]
#[[1]][[1]]
#[1] 2 3 4

#[[1]][[2]]
#[1] 1 2 3


#[[2]]
#[[2]][[1]]
#[1] 2 4 5

#[[2]][[2]]
#[1] 1 3 4


#[[3]]
#[[3]][[1]]
#[1] 4 3 4

#[[3]][[2]]
#[1] 1 2 3


#[[4]]
#[[4]][[1]]
#[1] 3 2 3

#[[4]][[2]]
#[1] 2 3 4

inds 将返回我们需要比较的每个列表的索引,该索引的值在两个向量中都不同。如果第一个索引具有更高的值,我们将按原样返回列表,不进行任何更改,否则我们将返回相反的列表。

关于R排列向量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68681678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com