R对象集合在一起

man*_*ubl 3 r object

我是R的新手并且有这个非常基本的疑问:我们可以有任何其他方法来创建一个对象,它是多个对象的集合,例如矩阵,数据框和向量吗?据我所知,它只能使用列表对象来完成.

说我有矩阵x,

x <- matrix(1:12,nrow=4)
y <- data.frame(x)
z <- c("a", "b", "c")
Run Code Online (Sandbox Code Playgroud)

生成列表my_list,

my_list <- list(x, y, z)
Run Code Online (Sandbox Code Playgroud)

但如果还有其他方式,我想知道这一点.

csg*_*pie 5

以下是一些返回数据的方法

  1. 列表(完整性)

    group1 = list(x, y, z)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 环境

    group2 = new.env()
    group2$x = x
    group2$y = y
    group2$z = z
    ls(envir=group2)
    
    Run Code Online (Sandbox Code Playgroud)
  3. S4对象

    setClass("group3",
             representation(
               x = "matrix",
               y = "data.frame",
               z = "character"
         )
    )
    s4 = new("group3", x=x, y=y, z=z)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 参考对象

    group4 = setRefClass("group4",
                fields = list(x = "matrix",
                              y = "data.frame",
                              z = "character"))
    group4$new(x=x, y=y, z=z)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 功能关闭

    group5 = function(x, y, z) function() return(list(x, y, z))
    g5 = group5(x, y, y)
    g5()
    
    Run Code Online (Sandbox Code Playgroud)

最后一个例子(函数闭包)试图强调有很多方法可以返回你的数据,但是你应该仔细考虑你想要对返回的对象做什么.例如,使用S4对象返回示例数据集是过度的.但是,bioconductor使用S4对象(与环境相结合)将来自微阵列实验的复杂数据集合在一起.

  • 我不确定“函数闭包”示例有多好,因为它返回一个“列表”——我们又回到了(方形)一。该示例并没有明确表明是*闭包本身*首先保存了对象,并且我们不需要将它们作为列表返回。 (2认同)