【问题标题】:Function to compare number doesn't work as expected比较数字的功能无法按预期工作
【发布时间】:2013-06-20 14:08:15
【问题描述】:

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

如果

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

我尝试编写以下函数。不幸的是,它不起作用。

 myfunc <- function(Data){   

数据 = df_a_freq
if(!is.numeric(Data)){
stop("参数 x 必须是数字")}
值 for (i in 1: length(Data)){
if (数据[[i]][i] > 数据[[i]][i+1]){
价值 否则 if(数据[[i]][i] 值 别的 { 值 }
}
返回(值)
}

当我运行该函数时,出现以下错误:

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

   在 TRUE / FALSE 时需要缺失值

我不知道如何解决它。

【问题讨论】:

    标签: r


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多