【问题标题】:Dynamic, General Indexing in RR中的动态、通用索引
【发布时间】:2016-09-25 19:34:20
【问题描述】:

有没有办法在 R 中跨多个列表、数据框、等进行索引?也就是说,一般?例如,您可以通过c(a[[2]][[2]],b[[2]][[2]]) 检索列表 a 和 b 的第二个元素的第二个元素的列表,但是如果不编写每个列表的名称和相应的索引括号,如何做到这一点?

输入:

l1 <- as.list(c(1,2,3,4,5))
l2 <- as.list(c(6,7,8,9,10))
a <- list(l1,l2)

l4 <- as.list(c(1,2,3,4,5))
l5 <- as.list(c(6,7,8,9,10))
b <- list(l4,l5)

期望的输出:

[1] 7 7

我知道您可以创建一个仅包含上层嵌套列表的列表(假设命名约定相同):

nol <- objects()
nol <- grep("^[a-z]$", nol, value=TRUE)

我只是不知道如何在这个列表中申请。

【问题讨论】:

    标签: json r indexing


    【解决方案1】:

    您可以通过vapply 执行此操作,如下所示:

    vapply(mget(nol), function(x) x[[2]][[2]], FUN.VALUE = double(1), USE.NAMES = FALSE)
    

    这里的想法是mget 为您提供对象列表。您也可以通过list(a,b) 创建它。匿名函数 function(x) x[[2]][[2]] 返回您的值。

    【讨论】:

    • 太棒了!有一件事:我知道这是一种权衡,但我发现使用 sapply 代替 vapply 可以让它处理大于长度 1 的值。
    • 您也可以根据自己的需要调整FUN.VALUE
    • 哦,我没有完全意识到那是为了什么!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2023-03-09
    • 2019-10-17
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多