y[[c(1,1)]] [1] 1 不能混合使用名称和索引: > y[[c("a",1)]] NU-6ren">
gpt4 book ai didi

r - R 中的子集化

转载 作者:行者123 更新时间:2023-12-04 09:11:57 24 4
gpt4 key购买 nike

x <- list(l1=list(1:4),l2=list(2:5),l3=list(3:8))

我知道 [] 用于提取多个元素,而 [[]] 用于提取列表中列表中的单个元素。我需要帮助在另一个列表中提取列表中的多个元素。例如,我需要从另一个列表中的列表 l1 中提取 1,3?

最佳答案

有关详细信息,请参阅help(Extract),其中涵盖了 [[[

[[ 运算符可以通过提供名称向量 OR 索引(路径)在单个步骤中遍历/搜索嵌套列表:

> y = list(a=list(b=1))
> y[[c("a","b")]]
[1] 1
> y[[c(1,1)]]
[1] 1

不能混合使用名称和索引:

> y[[c("a",1)]]
NULL

您似乎在问一个不同的问题,因为您的内部列表没有命名。

这是一个仅使用数字索引的解决方案:

> x[[c(1,1)]]
[1] 1 2 3 4
> x[[c(1,1)]][c(1,3)]
[1] 1 3

第一个 1 获取第一个列表的第一个元素。第二个 1 打开它以暴露内部的向量。

如果您的实际用例涉及更复杂的路径,这可能会有用,但为了避免让其他程序员感到惊讶,在给定的示例中,以下...

x[["l1"]][[1]][c(1,3)]

...可能更可取。第二个 1 展开列表。

在您的情况下,以下内容也是等价的

unlist(x[["l1"]])[c(1,3)]

关于r - R 中的子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370495/

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