2012-11-26 175 views
3

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

我必须创建40×40矩阵,我需要手动填充它。

回答

5

这不是一个matrix而是array

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

我不能使用此。我需要40x40矩阵,我需要手动填充矩阵。 – trood

+2

当然你可以使用它。一个数组只是矩阵概念的一个更高维的扩展,并且或多或少地以相同的方式工作。 – Roland

+0

如果这不适合你,它很可能是一个好主意,提供更多的背景,并解释为什么* *您不能使用此。要像上面那样手动填充数组,你只需要说'myarray < - array(dim = c(40,40,3));垫[1,3] < - C(6,8,9)'等等... –

7

那么,你可以添加尺寸到列表中,以便它类似于一个矩阵,其中的元素可以是您想要的任何东西,包括不同长度的向量。例如:

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所描述的阵列更合适。

+1

如果我是正确的第一行有可能会产生误导的错误..它应该是富< - as.list(数字(2 * 2))为2的结果的情况下是相同的,但对于任何其他它是不同的... – Picarus