我在 R 中有一个列表列表:
a <- list(x=0, y=c(1,2,3), z=4)
b <- list(x=1, y=c(1,2,3), z=44)
c <- list(x=2, y=c(1,2,3), z=444)
L <- list(a,b,c)
Run Code Online (Sandbox Code Playgroud)
对于给定的列表,说
l <- list(x=0, y=c(1,2,3), z=4)
Run Code Online (Sandbox Code Playgroud)
我知道想要找到L我们找到等于 的相应列表的正确索引l。
当然,我可以使用循环,但由于L它非常大,我需要一个更快的解决方案。(这里的列表甚至是正确的选择吗?)
我们可以使用stack与identical从base R
which(sapply(L, function(x) identical(stack(l), stack(x))))
#[1] 1
Run Code Online (Sandbox Code Playgroud)
或更紧凑
which(sapply(L, identical, l))
#[1] 1
Run Code Online (Sandbox Code Playgroud)