我想从另一个变量Y创建变量X,如果Y为负,则取1,如果Y为正则取0。我做ifelse(Y[Y<0],1,0)
但是如果Y [Y <0]则只显示1,而当Y> = 0时不显示0。
答案 0 :(得分:4)
在斯蒂芬的回答中加入贾斯汀的评论:
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
答案 1 :(得分:1)
这是一个测试序列:
> 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