【发布时间】:2018-10-17 03:44:29
【问题描述】:
考虑一下这个简单的小标题
> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA))
# A tibble: 3 x 2
col1 col2
<dbl> <dbl>
1 1 3
2 2 2
3 3 NA
将其转换为稀疏矩阵的最有效方法是什么? 我尝试了类似的东西
> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA)) %>%
+ as(., 'sparseMatrix')
Error in as(from, "CsparseMatrix") :
no method or default for coercing “tbl_df” to “CsparseMatrix”
没有成功。按照建议尝试:
y <- purrr::reduce(cbind2, map(df, 'Matrix', sparse = TRUE))
也不行。
使用 tidyverse 有什么好主意吗? 谢谢!
【问题讨论】:
-
我看到了,但我需要一个 tidyverse 解决方案。没有
lapply -
您可以调整
lapply/Reduce答案以改为使用purrr::map/purrr::reduce。我对稀疏矩阵的经验很少,所以我不确定我得到的是否是你想要的。也许发布一个结果示例? -
谢谢,但您能否使其与
map和reduce一起使用? -
map(df, Matrix::Matrix, sparse = T) %>% reduce(cbind2)给我一个 2 列稀疏矩阵。就像我说的那样,我对稀疏矩阵知之甚少,我不确定你想要什么结果。为什么引号中有'Matrix'?你从哪里加载它?
标签: r dplyr sparse-matrix purrr