0

我有一个这样的数据集:

     1    2    3    4    5

1    1    0    0    0    0

2    1    0    0    2    0

3    0    0    0    1    5

4    2    0    0    0    0

我想对具有多个非零列的行进行子集化(表示第 2,3 行)

我知道它必须类似于dataset[... dataset ...]但我没有找到如何在不使用 for 循环的情况下访问行

4

1 回答 1

2

你只需要rowSums真的。假设您的数据集称为“mydf”,请尝试:

> mydf[rowSums(mydf != 0) > 1, ]
  X1 X2 X3 X4 X5
2  1  0  0  2  0
3  0  0  0  1  5

在这里,rowSums(mydf != 0)将返回每行中有多少个值大于零的向量。然后,添加我们的条件> 1将创建一个逻辑向量,可用于对我们想要的行进行子集化。

于 2013-10-10T11:27:45.003 回答