2013-06-20 47 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