【发布时间】:2020-01-01 21:23:09
【问题描述】:
设置
我的任务看起来类似于this one,但不完全一样。假设我有一个像这样的对称数据框
df <- data.frame(
matrix(c(1, 7, 0, 5, 9, 0,
7, 4, 0, 8, 2, 0,
0, 0, 0, 0, 0, 0,
5, 8, 0, 1, 1, 0,
9, 2, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0), nrow=6, ncol=6)
)
看起来像这样
X1 X2 X3 X4 X5 X6
1 1 7 0 5 9 0
2 7 4 0 8 2 0
3 0 0 0 0 0 0
4 5 8 0 1 1 0
5 9 2 0 1 1 0
6 0 0 0 0 0 0
因为如果一行全是零是对称的,具有相同索引的对应列也将全是零。
我想做什么
我想删除所有仅包含零的行和列(通常,我想删除所有满足某些条件的行和列)。理想情况下,我想在 tidyverse 中使用函数。如果我能以某种方式使用管道,那就太好了。
可以用管道做到这一点吗?
重要
我犯了一个错误,我认为该解决方案必须适用于稀疏矩阵。请问有可能有一个适用于dgCMatrix 类的实现吗? IE。对于稀疏矩阵?
当我尝试下面的许多 tidyverse 实现时,我得到了
Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "c('dgCMatrix', 'CsparseMatrix', 'dsparseMatrix', 'generalMatrix', 'dCsparseMatrix', 'dMatrix', 'sparseMatrix', 'compMatrix', 'Matrix', 'xMatrix', 'mMatrix', 'Mnumeric', 'replValueSp')"
【问题讨论】:
-
基本 R 选项是
Filter(var, subset(df, rowSums(df!=0) > 0)) -
@akrun 我将发布一个单独的问题,因为我犯了一个错误。我需要它来处理稀疏矩阵。你能帮忙吗?
标签: r dataframe subset tidyverse