gpt4 book ai didi

r - 检查等长列表中元素的长度

转载 作者:行者123 更新时间:2023-12-04 12:33:37 25 4
gpt4 key购买 nike

检查列表中的元素是否等长?

例如。:

l <- list(c(1:3),c(2:7),c(12:13))

[[1]]
[1] 1 2 3

[[2]]
[1] 2 3 4 5 6 7

[[3]]
[1] 12 13

我有一个包含许多条目的长列表,并且想要一种方法来检查每个元素的长度是否相同。

由于长度不同 (3,6,2),在它上面应该返回 FALSE。

最佳答案

尝试这个:

length(unique(sapply(l, length))) == 1
# [1] FALSE

或者@PierreLafortune 的方式:
length(unique(lengths(l))) == 1L

或者@CathG 的方式:
all(sapply(l, length) == length(l[[1]])) 
#or
all(lengths(l) == length(l[[1]]))

一些基准测试:
#data
set.seed(123)
l <- lapply(round(runif(1000,1,100)), runif)


library(microbenchmark)
library(ggplot2)

#benchmark
bm <- microbenchmark(
zx8754 = length(unique(sapply(l, length))) == 1,
PierreLafortune=length(unique(lengths(l))) == 1L,
CathG_1 = all(lengths(l) == length(l[[1]])),
CathG_2 = all(sapply(l, length) == length(l[[1]])),
times = 10000)

# result
bm
Unit: microseconds
expr min lq mean median uq max neval cld
zx8754 326.605 355.281 392.39741 364.034 377.618 84109.597 10000 d
PierreLafortune 23.545 25.960 30.24049 27.168 28.375 3312.829 10000 b
CathG_1 9.056 11.471 13.49464 12.679 13.584 1832.847 10000 a
CathG_2 319.965 343.207 371.50327 351.659 364.940 3531.068 10000 c

#plot benchmark
autoplot(bm)

enter image description here

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

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