用于计算时间范围内峰值数的错误消息

时间:2015-10-17 01:52:12

标签: r count sum

我使用以下代码计算两个时间点之间的峰值数量:

sum(peaks>=1 & peaks<=25)

但是,我不断收到以下消息:

Error in peaks >= 1 : 
  comparison (5) is possible only for atomic and list types

x和y变量都是数字,所以我不确定为什么我收到此错误消息。这是一些示例数据的摘录:

0   0    
1   0
2   0
3   0
4   0
5   14.6464
6   14.6464
7   14.6464
8   14.6464
9   16.7139
10  20.8488
11  20.8488
12  19.0305
13  15.3939
14  15.3939
15  15.3939
16  15.0954
17  14.4985
18  14.4985
19  14.4985
20  15.2851
21  16.8582
22  16.8582
23  16.796
24  16.6715
25  16.6715

我已对此进行了调查,但其他错误消息的原因尚未应用于this examplethis one

1 个答案:

答案 0 :(得分:0)

您不能以这种方式使用功能。 这些比较用于子集化数据,不能应用于函数

你在做什么等同于

read.csv == 1

这会产生同样的错误,显然没有任何意义

实现找到数据峰值的目标。你应该尝试类似下面的内容

这会创建一些类似于您的示例的数据 - 假设您有一个数据框

x = c(0:25)
y = runif(26, 0, 30)
data = data.frame(x = x, y = y)

在这里我们可以看到x的哪些索引大于10,哪些索引大于15的y。真正意义上他们符合标准,错误意义他们没有。在R中,我们可以使用T / F作为子集数据的工具。

data$x >= 10
data$y <= 15

在这里,我们可以看到哪个符合这两个标准。再次是真是假。

data$x >= 10 & data$y <= 15

这向我们展示了符合该标准的行数 - 这似乎是您想要的。但是没有确定它们是哪一行 - 就像上一行一样。

sum(data$x >= 10 & data$y <= 15)

如果我们实际上看到哪些行符合此条件,我建议以这种方式使用子集

subset(data, x >= 10 & y <= 15)

这将导致符合数据框条件的所有行。