0

我有一个如下所示的 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){   

Data = df_a_freq
if(!is.numeric(Data)){
stop("argument x must be numeric")}
value <- list()
for (i in 1: length(Data)){
if (Data[[i] ][i] > Data[[i]][i+1]){
value <- 1}
else if(Data[[i]][i] < Data[[i]][i+1]){
value <- -1}
其他 { 值 <- 0
}
}
返回(值)
}

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

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

   在 TRUE / FALSE 时需要缺失值

我不知道如何解决它。

4

1 回答 1

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
于 2013-06-20T14:20:55.023 回答