2016-09-18 38 views
4

嗨,我想知道是否有方法将向量存储到数组或矩阵中。 例如,将向量存储在r中具有未知向量长度的矩阵

array1<-array(dim=c(1,2)) 
vector1<-as.vector(1:5) 
vector2<-as.vector(6:10) 
array1[1,1]<-vector1 
array1[1,2]<-vector2 

这样,当我要求

array1[1,1] 

我会收到

[1] 1 2 3 4 5 

我试着做我所做的上方,我得到的错误

number of items to replace is not a multiple of replacement length 

is t这里有一种方法来解决这个问题?

另外,我面对的问题是我不知道矢量长度,矢量也可能有不同的长度。

即矢量1可以是6和载体2的长度可以是7.

感谢的长度!

+0

你要什么,以填补短矢量? – aichao

+1

如果长度不相等,则使用列表而不是数组。 – Roland

+0

你想在你的列表中有多少维度?该向量可以存储在一个列表中,并通过'my_list [[1]]'检索,所以我不确定为什么要使用两个索引编号'array [1,1]'。 – RHertel

回答

4

试图用List:

my_list <- list() 
my_list[[1]] <- c(1:5) 
my_list[[2]] <- c(6:11) 

列表允许你存储不同长度的载体。

> my_list[[1]] 
#[1] 1 2 3 4 5 
+0

列表是否可以有多行和多列? – Donkeykongy

+0

@Donkeykongy一个列表可以包含任意数量的行和列的矩阵或数据框架。但是在评论中考虑到这个问题,我假设罗兰德的答案描述了你正在寻找的东西,即列表矩阵而不是矩阵列表。 – RHertel

1

您可以使用列表的矩阵:的载体可以通过处理列表的元素进行检索

m <- matrix(list(), 2, 2) 
m[1,1][[1]] <- 1:2 
m[1,2][[1]] <- 1:3 
m[2,1][[1]] <- 1:4 
m[2,2][[1]] <- 1:5 
m 
#  [,1]  [,2]  
#[1,] Integer,2 Integer,3 
#[2,] Integer,4 Integer,5 

m[1, 2] 
#[[1]] 
#[1] 1 2 3 

m[1, 2][[1]] 
#[1] 1 2 3