簡體   English   中英

將數據從一個矩陣插入到 R 中的另一個矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM