首页 > 解决方案 > 如何在R中按条件删除一行中的单个值?

问题描述

假设我有以下矩阵:

      2020-01-01 2021-01-01 2022-01-01 2022-06-06 2022-09-01 2025-01-0
[1,]       -100          0         10          0         10        120
[2,]       -200          0         30         20          0        130
[3,]       -250         20          0          0          0        280
...

现在我想按某些条件存储行。例如,我想存储没有零的第一行和没有低于零或零的值的第二行:

c(-100,10,10,120)    #Row 1 
 -100   10   10  120
c(30,20,130)         #Row 2
 30  20 130

我怎样才能做到这一点?感谢帮助!

标签: r

解决方案


假设您的矩阵是:

mat = cbind(c(-100,-200,-250),c(0,0,20),
c(10,30,0),c(0,20,0),c(10,0,0),c(120,130,280))

然后你会得到一个列表:

store_vals = apply(mat,1,function(i)i[i!=0])

如果要将 row1 存储为向量,则每个元素对应于每一行:

row1 = store_vals[[1]]
row1
[1] -100   10   10  120

推荐阅读