## 如何删除R中的零值行？内容来源于 Stack Overflow，并遵循CC BY-SA 3.0许可协议进行翻译与使用

• 回答 (2)
• 关注 (0)
• 查看 (191)

```|    DateTime      | Mac1  | Mac2  | Mac3  | Mac4  |
----------------------------------------------------
| 2011-04-02 06:00 | 20    | 0     | 20    | 20    |
| 2011-04-02 06:05 | 21    | 21    | 21    | 21    |
| 2011-04-02 06:10 | 22    | 22    | 22    | 22    |
| 2011-04-02 06:15 | 23    | 23    | 0     | 23    |
| 2011-04-02 06:20 | 24    | 24    | 24    | 24    |
| 2011-04-02 06:25 | 0     | 25    | 25    | 0     | ```

```|    DateTime      | Mac1  | Mac2  | Mac3  | Mac4  |
----------------------------------------------------
| 2011-04-02 06:05 | 21    | 21    | 21    | 21    |
| 2011-04-02 06:10 | 22    | 22    | 22    | 22    |
| 2011-04-02 06:20 | 24    | 24    | 24    | 24    |  ```

### 2 个回答

`apply`

```##Generate some data
dd = data.frame(a = 1:4, b= 1:0, c=0:3)

##Go through each row and determine if a value is zero
row_sub = apply(dd, 1, function(row) all(row !=0 ))
##Subset as usual
dd[row_sub,]```

```set.seed(42)
#Fake data
x <- data.frame(a = sample(0:2, 5, TRUE), b = sample(0:2, 5, TRUE))
> x
a b
1 2 1
2 2 2
3 0 0
4 2 1
5 1 2
#Subset out any rows with a 0 in them
#Note the negation with ! around the apply function
x[!(apply(x, 1, function(y) any(y == 0))),]
a b
1 2 1
2 2 2
4 2 1
5 1 2```

`x[x==0] <- NA`