2016-09-18 69 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