2014-08-28 24 views
0

匹配值,如果我有一個預分配的陣列,即」我怎樣才能插入的值的列表到基於R中

[1] [2] [3] [4] [5] [6] 

A 

B 

C 

D 

E 

F 

.. 

.. 

Z 

如何可以插入不同的列表,但較短的長度,即(B,D,E,F)(A,C,E.G,J,K)大的柱到列[2] : [6]

感謝,

+0

在什麼語言? – 2014-08-28 22:47:44

+0

使用R,我會假設 – hd1 2014-08-28 22:49:26

回答

0

我對這些問題的理由是將所有事情都歸結爲一項任務。在矩陣的情況下,可以使用另一種矩陣索引他們實現這一點,像這樣:

設置測試陣列和載體:

arr <- matrix(NA,nrow=5,ncol=6) 
arr[,1] <- LETTERS[1:5] 
vec1 <- c("B","D","E") 
vec2 <- c("A","C","E","G") 

#  [,1] [,2] [,3] [,4] [,5] [,6] 
#[1,] "A" NA NA NA NA NA 
#[2,] "B" NA NA NA NA NA 
#[3,] "C" NA NA NA NA NA 
#[4,] "D" NA NA NA NA NA 
#[5,] "E" NA NA NA NA NA 

圖出來矩陣列分配給:

vecs <- list(vec1,vec2) 
lens <- sapply(vecs,length) 
mat <- cbind(sequence(lens),rep(2:3,lens)) 
mat 

#  row col  
#  [,1] [,2] 
#[1,] 1 2 
#[2,] 2 2 
#[3,] 3 2 
#[4,] 1 3 
#[5,] 2 3 
#[6,] 3 3 
#[7,] 4 3 

分配遠:

arr[mat] <- unlist(vecs) 
arr 
#  [,1] [,2] [,3] [,4] [,5] [,6] 
#[1,] "A" "B" "A" NA NA NA 
#[2,] "B" "D" "C" NA NA NA 
#[3,] "C" "E" "E" NA NA NA 
#[4,] "D" NA "G" NA NA NA 
#[5,] "E" NA NA NA NA NA 
+0

謝謝,那麼我如何能夠對列[,2]進行排序以使它們與[,1]中的值保持一致? – mattbawn 2014-08-29 02:37:14

0

sapply(newarray, function(elem) { master_list[,2] <- rbind(master_list[,2], elem})

elem是匿名函數的參數,作爲第二個參數傳遞給sapply。查看幫助以獲取更多詳細信息。

+0

嗨hd1,你能擴展你的答案嗎?什麼是elem? – mattbawn 2014-08-29 19:01:06