设置
我的任务看起来与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
类的实现吗?即稀疏矩阵?当我尝试下面的许多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')"
最佳答案
你可以做:
df %>%
select_if(~ any(. != 0)) %>%
filter_all(any_vars(. != 0))
X1 X2 X4 X5
1 1 7 5 9
2 7 4 8 2
3 5 8 1 1
4 9 2 1 1
关于r - 在对称数据帧中删除行和列满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59556229/