匹配值,如果我有一個預分配的陣列,即」我怎樣才能插入的值的列表到基於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]
?
感謝,
匹配值,如果我有一個預分配的陣列,即」我怎樣才能插入的值的列表到基於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]
?
感謝,
我對這些問題的理由是將所有事情都歸結爲一項任務。在矩陣的情況下,可以使用另一種矩陣索引他們實現這一點,像這樣:
設置測試陣列和載體:
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
謝謝,那麼我如何能夠對列[,2]進行排序以使它們與[,1]中的值保持一致? – mattbawn 2014-08-29 02:37:14
sapply(newarray, function(elem) { master_list[,2] <- rbind(master_list[,2], elem})
elem
是匿名函數的參數,作爲第二個參數傳遞給sapply
。查看幫助以獲取更多詳細信息。
嗨hd1,你能擴展你的答案嗎?什麼是elem? – mattbawn 2014-08-29 19:01:06
在什麼語言? – 2014-08-28 22:47:44
使用R,我會假設 – hd1 2014-08-28 22:49:26