【问题标题】:Matrix of vectors in RR中的向量矩阵
【发布时间】:2012-11-26 13:54:30
【问题描述】:

是否可以在 R 中创建向量矩阵?我的意思是这个矩阵的元素必须是向量。例如mat[1,3] == c(6,8,9)

我必须创建 40x40 矩阵并且我需要手动填充它。

【问题讨论】:

    标签: arrays r matrix


    【解决方案1】:

    这不是matrix,而是array

    myarray <- array(1:24, c(2,4,3))
    myarray[1,3,]
    #[1]  5 13 21
    

    【讨论】:

    • 我不能用这个。我需要 40x40 矩阵,我需要手动填充矩阵。
    • 当然可以用这个。数组只是矩阵概念的更高维扩展,其工作方式或多或少是相同的。
    • 如果这对您不起作用,最好提供更多上下文并解释为什么您不能使用它。要像上面那样手动填充数组,您只需说 myarray &lt;- array(dim=c(40,40,3)); mat[1,3,] &lt;- c(6,8,9) 等等...
    【解决方案2】:

    好吧,您可以向列表添加维度,使其类似于矩阵,其中的元素可以是您想要的任何元素,包括不同长度的向量。例如:

    foo <- as.list(numeric(2^2))
    dim(foo) <- c(2,2)
    
    # Assignment per element:
    foo[[1,1]] <- 1:4
    foo[[1,2]] <- 1:10
    foo[[2,1]] <- "foo"
    foo[[2,2]] <- list(foo)
    

    给你一个奇怪的对象:

    > foo
         [,1]      [,2]      
    [1,] Integer,4 Integer,10
    [2,] "foo"     List,1    
    

    每个元素基本上都是一个向量。尽管如此,这几乎不是最好的方法。如果向量的长度相同,则 Roland 描述的数组更合适。

    【讨论】:

    • 如果我是对的,第一行有一个可能会误导的错误。对于 2 的情况,它应该是 foo
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2020-01-17
    • 2015-04-23
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多