2015-10-17 141 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