我正在寻找R中的指标函数,即如果向量中元素的值大于0则返回1的函数,如果向量中元素的值较小则返回0比0.
我需要在向量中的所有元素上使用此函数,返回一个只有零和一的新向量。
感谢。
答案 0 :(得分:6)
有多种方式,最小的击键方式之一:
Ivec <- 0+(vec>0)
保存几个按键:as.numeric(vec>0)
。我想如果应用于大型矢量或在模拟中使用,ifelse(x>0,1,0)
- 方法会稍慢。也可以使用:
Ivec <- 1*(vec>0)
答案 1 :(得分:4)
如果我能够正确理解你,那么你想对整个数据框进行更改,假设我可以建议你使用如下所示的应用,其中df是你的数据框。
apply(df,2,function(x)ifelse((x>0),1,0))
你也可以使用if仅用于下面的一个向量:
x <- c(-2,3,1,0)
y <- ifelse(x>0,1,0)
print(y)
[1] 0 1 1 0 #Output
希望这有帮助
答案 2 :(得分:1)
R中的I
函数称为抑制解释/对象转换功能,可用于此目的。例如,下面的行返回函数I(x <4)的值,其中X = {0,1,2,3,4,5}:
> I(0:5 < 4)
[1] TRUE TRUE TRUE TRUE FALSE FALSE
在R TRUE
和FALSE
中可以视为1和0,但如果您坚持输出正是这些数字,只需将I
函数包装到{{1}中}。
答案 3 :(得分:0)
R
中还有一个内置指示器功能指示符(X,MIN,MAX)
-Inf和Inf仍然是有效值。