[英]Inserting data from one matrix to another matrix in R
我有一個空矩陣 (5000 x 200),其中 User.IDs 作為行,電影名稱作為列名。 目前矩陣中的每個單元格都有一個 NA。
現在我有一個“訓練矩陣”——基本上是用於訓練的數據集樣本,以矩陣格式。 訓練矩陣的維度為 3500 x 200,但填充了一些用戶對特定用戶的評分的值。
現在我想要的是將訓練矩陣“疊加”或“插入”到空矩陣中。 實際上,在用戶對電影評分的情況下,我希望將其插入到空矩陣中,但保留空矩陣的維度。 在適用的情況下,基本上將“用戶 ID”行與“電影名稱”列相匹配。 有人向我推薦了dplyr
包中的complete
功能,但我不確定如何實現這樣的解決方案。
好的,假設您有一個帶有(真)行名的訓練矩陣:
m <- rbind(c(10,8,2),
c(9,8,7),
c(10,6,5))
rownames(m) <- c("Bob", "Denise", "Ernie")
在哪里:
> class(m)
[1] "matrix"
> m
[,1] [,2] [,3]
Bob 10 8 2
Denise 9 8 7
Ernie 10 6 5
>
和一個更大的空輸出矩陣:
e <- matrix(NA_real_, nrow=5, ncol=3)
rownames(e) <- c("Alice", "Bob", "Carla", "Denise", "Ernie")
在哪里:
> e
[,1] [,2] [,3]
Alice NA NA NA
Bob NA NA NA
Carla NA NA NA
Denise NA NA NA
Ernie NA NA NA
>
在這種情況下,您可以使用match()
函數生成空輸出矩陣中與輸入矩陣中的行匹配的行索引的向量:
o <- match(rownames(m), rownames(e))
if (any(is.na(o))) stop("oops -- didn't match everyone")
給予:
> o
[1] 2 4 5
>
然后之后:
e[o,] <- m
輸出矩陣將具有所需的內容:
> e
[,1] [,2] [,3]
Alice NA NA NA
Bob 10 8 2
Carla NA NA NA
Denise 9 8 7
Ernie 10 6 5
>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.