【问题标题】:create variable that takes 1 if it's negative and 0 otherwise创建变量,如果它是负数则取 1,否则取 0
【发布时间】:2013-12-26 21:41:24
【问题描述】:

我想从另一个变量 Y 创建一个变量 X,如果 Y 为负则取 1,如果 Y 为正则取 0。我做了ifelse(Y[Y<0],1,0),但它只在 Y[Y=0 时不显示 0。

【问题讨论】:

  • 只要ifelse(Y < 0, 1, 0)

标签: r if-statement vector boolean conditional


【解决方案1】:

在斯蒂芬的回答中添加贾斯汀的评论:

Rgames> library(microbenchmark)
Rgames> negone <-function(x) ifelse(x<0,1,0)
Rgames> negtwo <-function(x) as.integer(x<0)
Rgames> longfoo <- -1e6:1e6
Rgames> microbenchmark(negone(longfoo),negtwo(longfoo),times=10)
Unit: milliseconds
            expr       min        lq    median        uq      max neval
 negone(longfoo) 602.49903 607.36539 616.70490 662.40269 819.8965    10
 negtwo(longfoo)  17.06902  17.55908  20.99846  24.52379  26.0333    10

【讨论】:

    【解决方案2】:

    这是一个测试序列:

    > Y=seq(-5,5,1)
    > Y
     [1] -5 -4 -3 -2 -1  0  1  2  3  4  5
    

    这是您在 ifelse 语句中的测试。

    > Y[Y<0]
    [1] -5 -4 -3 -2 -1
    

    其实意义不大,

    这可能是你的意思:

    > ifelse(Y<0,1,0)
     [1] 1 1 1 1 1 0 0 0 0 0 0
    

    【讨论】:

    • FWIW, as.integer(Y &lt; 0) 将给出相同的答案,并且开销更少。
    猜你喜欢
    • 2021-09-27
    • 2016-05-13
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2017-03-17
    相关资源
    最近更新 更多