R 替换稀疏矩阵的前几个观测值

R 替换稀疏矩阵的前几个观测值,r,dplyr,sparse-matrix,tidyr,R,Dplyr,Sparse Matrix,Tidyr,我有如下数据,如下所示: col1 col2 [1,] "group 5" "BNDBP6569M" [2,] "group 3" "MMCRO7403D" [3,] "group 3" "QFMVN5837D" [4,] "group 3" "JEXQH9565P" [5,] "group 3" "VEGAE7145C" [6,] "group 1" "JHRQM4424S" [7,] "group 2" "HNABS7216

我有如下数据,如下所示:

       col1      col2        
  [1,] "group 5" "BNDBP6569M"
  [2,] "group 3" "MMCRO7403D"
  [3,] "group 3" "QFMVN5837D"
  [4,] "group 3" "JEXQH9565P"
  [5,] "group 3" "VEGAE7145C"
  [6,] "group 1" "JHRQM4424S"
  [7,] "group 2" "HNABS7216I"
dat_sparse <- dat %>% 
  as_tibble() %>%
  count(col1, col2) %>%
  spread(col2, n, fill = 0) %>%
  as.matrix()

rownames(dat_sparse) <- dat_sparse[,1]
dat_spares <- dat_sparse[,-c(1)]
new_mat <- Matrix(dat_spares) 
我将其转换为稀疏格式,如下所示:

[1,] NA . . . 1 . . 1 . . . 1 1 . . . . . . . . . . . . . . . . . . . 1 . . . . .
[2,] NA . 1 . . 1 . . . 1 1 . . . . . . . . . 1 1 . . 1 . 1 . . . . . . . . . . .
[3,] NA 1 . . . . . . . . . . . . . 1 1 . . . . . . 1 . . . 1 1 . . . . 1 . . . 1
[4,] NA . . . . . . . 1 . . . . . . . . 1 . 1 . . 1 . . . . . . 1 . 1 . . . . 1 .
[5,] NA . . 1 . . 1 . . . . . . 1 1 . . . 1 . . . . . . 1 . . . . 1 . . . 1 1 . .
group 1 . . . . . 1 . . 1 . . . 1 . . . 1 . . . 1 . . . . . . 1 1
group 2 1 . 1 . 1 . . . . . . . . 1 1 . . . . 1 . 1 . . 1 . . . .
group 3 . 1 . 1 . . 1 . . . . 1 . . . . . . 1 . . . 1 1 . . 1 . .
group 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
group 5 . . . . . . . 1 . 1 1 . . . . 1 . 1 . . . . . . . 1 . . .
创建此稀疏矩阵时,我得到一个警告:

Warning message:
In storage.mode(from) <- "double" : NAs introduced by coercion
编辑:

我认为问题可以归结为最后两行:

dat_sparse <- dat %>% 
  as_tibble() %>%
  count(col1, col2) %>%
  spread(col2, n, fill = 0) %>%
  as.matrix() %>%
  Matrix(., sparse = TRUE)
似乎有效。
新的\u mat
如下所示:

[1,] NA . . . 1 . . 1 . . . 1 1 . . . . . . . . . . . . . . . . . . . 1 . . . . .
[2,] NA . 1 . . 1 . . . 1 1 . . . . . . . . . 1 1 . . 1 . 1 . . . . . . . . . . .
[3,] NA 1 . . . . . . . . . . . . . 1 1 . . . . . . 1 . . . 1 1 . . . . 1 . . . 1
[4,] NA . . . . . . . 1 . . . . . . . . 1 . 1 . . 1 . . . . . . 1 . 1 . . . . 1 .
[5,] NA . . 1 . . 1 . . . . . . 1 1 . . . 1 . . . . . . 1 . . . . 1 . . . 1 1 . .
group 1 . . . . . 1 . . 1 . . . 1 . . . 1 . . . 1 . . . . . . 1 1
group 2 1 . 1 . 1 . . . . . . . . 1 1 . . . . 1 . 1 . . 1 . . . .
group 3 . 1 . 1 . . 1 . . . . 1 . . . . . . 1 . . . 1 1 . . 1 . .
group 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
group 5 . . . . . . . 1 . 1 1 . . . . 1 . 1 . . . . . . . 1 . . .

其中
组1、组2等是行名

这是一个整洁的解决方案

dat_sparse <- dat %>% 
  as_tibble() %>%
  count(col1, col2) %>%
  spread(col2, n, fill = 0) %>%
  column_to_rownames("col1") %>%
  as.matrix() %>%
  Matrix(., sparse = TRUE)

dat_sparse

函数“矩阵”是否来自“矩阵”库?请澄清加载了哪些库。啊,抱歉!我使用了
library(tidyr)library(dplyr)library(Matrix)library(rsample)library(tibble)library(purr)
然后请编辑您的帖子。Matrix软件包不提供稀疏字符矩阵。我不理解tidyverse的含糊不清,但似乎您正试图将字符值放入数字矩阵中。但是,矩阵可以有行名和列名。