R - 如何确定数据帧列中的每个值是否为零?

时间:2016-10-24 20:56:18

标签: r dataframe

我有一个数据框,想要确定给定列是否列中的每个值都等于零。

这是我的代码:

z <- read.zoo(sub, sep = ",", header = TRUE, index = 1:2, tz = "", format = "%Y-%m-%d %H:%M:%S")

if(all.equal(z$C_duration, 0)) 
  C_dur_acf = NA

但是我收到了一个错误:

 Error in if (all.equal(z$C_duration, 0)) { : 
  argument is not interpretable as logical

如果整个列都是零,则代码应返回一个布尔值(TRUE / FALSE)。

3 个答案:

答案 0 :(得分:5)

使用all内置:all(z$C_duration == 0)

答案 1 :(得分:2)

这是一个使用R中内置的iris数据集和apply成瘾的all函数的示例,它允许您测试在其中传递的对象的所有元素是否都遵循一个或多个逻辑条件。

请注意,在这种情况下,&#34;对象&#34;是数据框的一列。 lapply的代码对每列都执行相同的操作。

lapply(iris[-5], function(x) all(x == 0))
$Sepal.Length
[1] FALSE

$Sepal.Width
[1] FALSE

$Petal.Length
[1] FALSE

$Petal.Width
[1] FALSE

答案 2 :(得分:0)

使用all.equal:

if(all.equal(z$C_duration, rep(0, length(z$C_duration)){
    C_dur_acf = NA
}

本质上,all.equal进行成对测试。 if语句失败,因为all.equal(z$C_duration,0)返回:&#34;数字:长度(##,1)不同&#34;

HTH!