R中的向量矩阵

5

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

我需要创建一个40x40的矩阵,并且需要手动填充它。

2个回答

8

这不是一个矩阵,而是一个数组

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

我不能使用这个。我需要一个40x40的矩阵,并且需要手动填充矩阵。 - trood
2
当然可以使用。数组只是矩阵概念的高维扩展,工作方式基本相同。 - Roland
1
如果这种方法不适用于您,最好提供更多的上下文并解释为什么不能使用它。要像上面那样手动填充数组,只需输入 myarray <- array(dim=c(40,40,3)); mat[1,3,] <- c(6,8,9) 等等... - Ben Bolker

6

你可以给列表中的元素添加维度,这样它看起来像一个矩阵,其中的元素可以是任何东西,包括长度不同的向量。例如:

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描述的数组更加合适。


3
如果我没错的话,第一行代码有一个 bug,可能会引起误解。应该将其改为 foo <- as.list(numeric(2*2))。当参数为 2 时结果相同,但对于其他参数则不同。 - Picarus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接