2015-10-17 96 views
0

我使用下面的代码计算峰的两个时间点之间的数量之内计数的峰值数错误消息:一时间范围

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

+0

你需要说明你是什么子集,然后应用'sum'到这个子集。一般形式是sum(vector_of_something [vector_of_something_else> = 1&vector_of_something_else <= 25)'。在数据帧'df','sum(df $ vector_of_something [df $ vector_of_something_else> = 1&df $ vector_of_something_else <= 25)'或'with(df,sum(vector_of_something [vector_of_something_else> = 1&vector_of_something_else < = 25))'。 – 2015-10-17 02:04:35

+0

@帕斯卡感谢您的回复。这些子集有何不同? sum(df $ peak [df $ peak> = 1&df $ peak <= 25]) – Erica

+1

您能否提供更多信息?就像你提到的x和y一样,它们中哪些是高峰?或者是峰值数据帧,并且您想要查找指定的两个值之间的数据帧的所有值? – SamPassmore

回答

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) 

这将导致从数据帧符合条件的所有行使用的子集。

+0

我有数据的峰值,我试图计算一个时间范围内峰值的数量。 – Erica