2013-06-20 75 views
0

我有data.frame,看起來像這樣:功能比較號碼不起作用

Col1 Col2 Col3 ......  
    30  50  90   
    50  50  20   

我想簡單地以這種方式來比較第1行和每一列第2行:

如果

DF [[I] [I]> DF [[I] [I + 1] - > 1(比較所以與ROW1每列的2行)

如果

DF [[I] [I] < DF [[I] [I + 1] - > -1

如果

DF [[i]] [i] == DF [[i]] [i + 1] - > 0

我試着編寫下面的函數離子。不幸的是它不起作用。

myfunc <- function(Data){ 

數據= df_a_freq
如果{
停止( 「自變量x必須是數字」)}
值<(is.numeric(數據)!) - 列表()
爲(我在1:長度(數據)){
如果(數據[[I] [I]>數據[[I] [I + 1]){
值< - 1}
否則如果(數據[[i]] [i] < Data [[i]] [i + 1]){
值< - -1}
否則{ 值< - 0
}
}
返回(值)
}

當運行該函數發生以下錯誤:

Error in if (Data [[i]] [i]> Data [[i]] [i + 1]) {: 

缺失值是必需的真/假

我真的不知道如何解決它。

任何人都可以幫助我嗎?

Best,

F.

回答

1

使用ifelse例如:

ifelse(DF[1,] > DF[2,],1, 
     ifelse(DF[1,] < DF[2,],-1,0)) 

使用您的數據:

DF <- read.table(text= 'Col1 Col2 Col3 
       30  50  90   
       50  50  20 ',header=TRUE ) 
ifelse(DF[1,] > DF[2,],1, 
     ifelse(DF[1,] < DF[2,],-1,0)) 

Col1 Col2 Col3 
    -1 0 1 
+1

太棒了!幾行,它的作品! – Fuv8