比较数字的功能不能按预期工作

时间:2013-06-20 14:08:15

标签: r

我有一个看起来像这样的data.frame:

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

我想以这种方式简单地比较每列的第1行和第2行:

如果

  

DF [[i]] [i]> DF [[i]] [i + 1] - > 1(因此将row1与每列的row2进行比较)

如果

  

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

如果

  

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

我试着编写以下功能。不幸的是它不起作用。

 myfunc <- function(Data){   
     

数据= df_a_freq
           如果(!is.numeric(数据)){
          停止(“参数x必须是数字”)}
            值&lt; - list()
      for(i in 1:length(Data)){
      if(Data [[i]] [i]&gt; Data [[i]] [i + 1]){
  值&lt; - 1}
  否则if(Data [[i]] [i]&lt; Data [[i]] [i + 1]){
  值&lt; - -1}
  其他{           值&lt; - 0
      }
    }
  收益率(值)
  }

当我运行该函数时,会发生以下错误:

  Error in if (Data [[i]] [i]> Data [[i]] [i + 1]) {:
     如果为TRUE / FALSE

,则需要

缺失值

我不知道如何解决它。

1 个答案:

答案 0 :(得分: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