我使用以下代码计算两个时间点之间的峰值数量:
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 example或this one。
答案 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)
这将导致符合数据框条件的所有行。