【问题标题】:save vector into matrix/data frame value将向量保存到矩阵/数据框值中
【发布时间】:2014-06-16 20:40:30
【问题描述】:

在 R 中,有没有办法将整个向量保存到矩阵或数据框的一个值中,而不必先将其组合成一个值?

例如,如果我有一个向量..

pk<-c(0.021477,0.021114,0.022794,0.014858,0.009690,0.003255,0.002715)

还有一个矩阵..

tst<-matrix(data=NA,nrow=4,ncol=4)

有没有说,例如..

tst[1,1]<-pk

?

我知道我可以将矢量粘贴在一起,但我想知道是否有办法避免这种情况?这是一个效率问题,因为实际矩阵是 33427 x 33427,每个向量大约有 300 个值长,我需要对矩阵中的每个值进行进一步分析。我希望找到一种方法来加快分析速度。

【问题讨论】:

    标签: r vector matrix


    【解决方案1】:

    您当然可以在矩阵的每个元素中放置一个向量。尝试类似

    tst<-matrix(data=list(),nrow=4,ncol=4)
    tst[[1,1]] <- pk #note double square brackets needed for assignment
    

    打印效果不好

    tst
         [,1]      [,2] [,3] [,4]
    [1,] Integer,5 NULL NULL NULL
    [2,] NULL      NULL NULL NULL
    [3,] NULL      NULL NULL NULL
    [4,] NULL      NULL NULL NULL
    

    但可以通过显而易见的方式提取元素

    > tst[1,1]
    [[1]]
    [1] 0.021477 0.021114 0.022794 0.014858 0.009690 0.003255 0.002715
    #note list
    
    > tst[[1,1]]
    [1] 0.021477 0.021114 0.022794 0.014858 0.009690 0.003255 0.002715
    #original vector
    

    【讨论】:

      【解决方案2】:

      如果向量的长度不同,我可以看到两种处理方法。要么将长度四舍五入到最大值,然后将内容放入数组中

      tst<- array(data=NA, dim=c(4,4,maxLen))
      tst[1,1,1:length(pk)] <- pk
      

      或者,您可以只创建pks 的列表,并生成一个映射,以将一维列表索引与它们对应的二维矩阵元素进行转换。

      哪些是最佳的将取决于您希望进行的下游分析。如果存在“内部 pk”通信(例如,您在 [1,1] 处使用 pk 的元素 1,在 [1,2]、[2,1] 处使用 pk 的元素 1...),那么数组解决方案可能是更好的。但如果所有计算都在一个单独的向量内,那么列表可能是更好的方法

      【讨论】:

        【解决方案3】:

        您还可以使用“原样”I 函数并将 pk 设为 1 元素列表(包含向量):

        pk <- c(0.021477,0.021114,0.022794,0.014858,0.009690,0.003255,0.002715)
        dat <- data.frame(a <- I(list(pk)))
        str(dat)
        ## 'data.frame':    1 obs. of  1 variable:
        ##  $ a....I.list.pk..:List of 1
        ##   ..$ : num  0.02148 0.02111 0.02279 0.01486 0.00969 ...
        ##   ..- attr(*, "class")= chr "AsIs"
        
        dat[1,1]
        ## [[1]]
        ## [1] 0.021477 0.021114 0.022794 0.014858 0.009690 0.003255 0.002715
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-17
          • 2021-12-15
          • 2014-07-06
          • 2019-04-11
          • 2021-03-12
          • 2013-02-14
          相关资源
          最近更新 更多