【问题标题】:Determing the length from a list in R从R中的列表确定长度
【发布时间】:2019-04-04 05:33:21
【问题描述】:

我有一个列表,其中每个元素都是一个数组。示例数据:

set.seed(24)
data <- list(individual1 = array(rnorm(3 * 3 * 2, 60), 
  dim = c(3, 3, 2), dimnames = list(NULL, NULL, c("rep1", "rep2"))), 
 individual2 = array(rnorm(3 * 3 * 2, 60), dim = c(3, 3, 2), 
   dimnames = list(NULL, NULL, c("rep1", "rep2")) ) )

我想知道整个列表的长度。但是,当我使用长度时,我得到 2,而我想要 4,因为有 4 个数组。还有另一种方法来确定我的问题的长度吗?

>length(data)
2

【问题讨论】:

    标签: arrays r list


    【解决方案1】:

    像这样?

    sum(sapply(data, function(x) dim(x)[3]))
    #[1] 4
    

    解释:您的 list 实际上只包含 2 个元素。每个list 元素的维度是

    lapply(data, dim)
    #$individual1
    #[1] 3 3 2
    #
    #$individual2
    #[1] 3 3 2
    

    换句话说,每个list 元素都有2 个3x3 数组。因此,我们可以通过将每个 list 元素中的 3x3 数组的数量相加来获得 list 中的 3x3 数组的总数。

    【讨论】:

    • 只是为了确认,只要第一维和第二维是静态的,每个元素中有多少个数组都没有关系,您提供的代码应该给我正确的第三维和?
    • @user3683803 我不知道你说的“只要第一维和第二维是静态的”是什么意思。在这里,我们对数组的第三维求和。我假设这就是您想要的,因为您提到了所需的输出 4。每个列表元素都包含一个 3x3x2 数组,我们将其解释为 2 个 3x3 数组。第一个维度和第二个维度在这里无关紧要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多