我有一个数据框,想要确定给定列是否列中的每个值都等于零。
这是我的代码:
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)。
答案 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!