【问题标题】:Subsetting list containing multiple classes by same index/vector按相同索引/向量包含多个类的子集列表
【发布时间】:2018-12-05 14:27:31
【问题描述】:

我需要对包含数组和因子变量的列表进行子集化。本质上,如果您想象阵列的每个组成部分都与单个个体相关,然后该个体与两个因素变量(治疗)相关联。

list(array=array(rnorm(2,4,1),c(5,5,10)), treatment= rep(c(1,2),5))

通常,当从列表的第一个组件设置数组的多个组件时,我会使用类似

 list$array[,,c(2,4,6)] 

这将返回位置 2,4 和 6 中的数组组件。但是,对于列表的因子组件,这将不起作用,因为子集不同,您需要的是:

 list$treatment[c(2,4,6)]

需要用相同的相对数对包含不同类(数组和向量)的列表进行子集化。

【问题讨论】:

    标签: r matrix subset


    【解决方案1】:

    您将矩阵列表视为某种 3 维对象,但事实并非如此。
    您的 list$matrices 本身也是一个列表,这意味着您也可以将 at 作为一个列表进行索引,不管它是矩阵、数字、绘图对象还是其他的列表。

    您作为示例提供的数据只能在一级索引,因此list$matrices[c(2,4,6)] 可以正常工作。 我真的不明白你关于将索引保存在数字向量中的问题,是什么阻止你使用这段代码?

    indices <- c(2,4,6)
    mysubset <- list(list$matrices[indices], list$treatment[indices])
    

    编辑,为已编辑的问题添加新信息:

    我看到你现在实际上有一个 3-D 数组。这有点奇怪,因为对于什么可以被视为“组件”没有明确的约定。我的意思是,根据您的问题,我了解到 list$array[,,n] 指的是第 n 个个人,但从纯代码的角度来看,没有理由像 list$array[n,,] 这样的东西不能指代。
    也许您从其他语言中得到了这个想法,但这并不是真正的 R-ish,您之前的矩阵列表示例对我来说更有意义。而且我认为最合乎逻辑的应该是带有列矩阵和处理的 data.frame(从概念上讲,它接近于带有向量和矩阵列表的列表,但对其他人来说,您所拥有的更清楚)。

    但无论如何,你想要的输出是什么?
    如果它只是子集:使用这种结构,因为对可能的内容没有限制,你只需要准确地告诉 R 你想要什么。没有一个运算符可以同时获取向量的子集和数组的第三个索引。您将不得不告诉 R 您希望将第三个索引用于子集,并且您希望使用相同的索引来对向量进行子集。这基本上就是你已经拥有的代码:

    idx <- c(2,4,6)
    output <- list(list$array[,,idx], list$treatment[idx])
    

    【讨论】:

    • 谢谢。以上工作。我有时发现很难知道如何处理我正在处理的数据结构。例如,有时事物有引号,有时没有。我认为这种情况下的部分问题是我认为我正在处理列表中的列表,但它是列表中的一个数组,其中包含许多其他向量。不幸的是,我正在使用一个包,它以特定格式强制事物,非常令人困惑。感谢您的帮助。
    【解决方案2】:

    您用于对多个矩阵进行子集化的方式实际上会产生错误,因为尽管您已经指定了您所在的子列表,但您提供了额外的维度。因此,为了对给定索引的矩阵进行子集化,您可以使用my_list[[1]][indices] 或直接my_list$matrices[indices]。案例处理my_list[[2]][indices]my_list$treatement[indices]也是一样

    【讨论】:

    • 好的,所以刚刚检查了我的原始数据集,实际上列表的第一个组成部分是一个维度为 91 2 114 的数组,而列表的第二个组成部分是一个长度为 114 的向量。抱歉造成混淆。也许这会更好地重新创建它: list(array=array(rnorm(2,4,1),c(5,5,10)),treatment= rep(c(1,2),5))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2020-12-08
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多