save vector into matrix/data frame value
在R中是否有一种方法可以将整个矢量保存为矩阵或数据帧的一个值,而不必先将其组合为单个值?
例如,如果我有矢量。.
1 | pk<-c(0.021477,0.021114,0.022794,0.014858,0.009690,0.003255,0.002715) |
和一个矩阵..
1 | tst<-matrix(data=NA,nrow=4,ncol=4) |
不管怎么说,例如
。
1 | tst[1,1]<-pk |
?
我知道我可以将向量粘贴在一起,但是我想知道是否有避免这种情况的方法?这是效率问题,因为实际矩阵为33427 x 33427,每个向量的长度约为300个值,我需要对矩阵中的每个值进行进一步的分析。我希望找到一种加快分析速度的方法。
您当然可以在矩阵的每个元素中放置一个向量。尝试类似
1 2 | tst<-matrix(data=list(),nrow=4,ncol=4) tst[[1,1]] <- pk #note double square brackets needed for assignment |
它不会打印"很好"
1 2 3 4 5 6 | 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 |
但是可以通过显而易见的方式提取元素
1 2 3 4 5 6 7 8 | > 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 |
如果向量的长度不同,我可以看到两种处理方式。将长度四舍五入到最大值,然后将其放入数组
1 2 | tst<- array(data=NA, dim=c(4,4,maxLen)) tst[1,1,1:length(pk)] <- pk |
或者,您可以仅创建
其中哪些是最佳选择,将取决于您希望进行的下游分析。如果存在"内部-pk"通信(例如,使用[1,1]处pk的元素1和[1,2],[2,1] ...处pk的元素1),则数组解可能是更好的。但是,如果所有计算都在单个向量内,则列表可能是更好的选择
您还可以使用"原样"
1 2 3 4 5 6 7 8 9 10 11 | 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 |