gpt4 book ai didi

r - 列表中最长元素的长度

转载 作者:行者123 更新时间:2023-12-05 05:13:17 28 4
gpt4 key购买 nike

我有一个如下所示的列表:

[[1]]
[1] -3

[[2]]
[1] 0 0

[[3]]
[1] 6 -36 54

我想从中创建一个矢量,看起来像

3 -36 54

为此,我考虑在元素末尾添加零,刚好足以使元素大小相等并使用

Reduce('+',....)

将元素粘贴在一起。但是,我不想添加过多的零。提到的列表不一定是我想要的列表。我有多个列表。最后我的问题是:有没有办法从列表中检索元素的最大长度?

最佳答案

我们用lengths得到list中各个元素的length,然后得到max值它与 max,创建一个逻辑索引和子集 list

i1 <-  max(lengths(lst))
i2 <- lengths(lst)== i1
lst[i2]

假设 OP 想要帖子中描述的向量

f1 <- function(listA, i = 1) {
i1 <- max(lengths(listA))
listB <- lapply(listA, `length<-`, i1)
Reduce(`+`, lapply(listB, function(x) replace(x, is.na(x), 0)))


}

f1(lst)
#[1] 3 -36 54

如果我们在矩阵中需要它,可以用stri_list2matrix来完成,并用rowSums得到sum >

library(stringi)
out <- stri_list2matrix(lst)
class(out) <- 'numeric'
rowSums(out, na.rm = TRUE)
#[1] 3 -36 54

数据

lst <- list(-3, c(0, 0), c(6, -36, 54))

关于r - 列表中最长元素的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741561/

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