我正在用R进行编码,我想用1替换给定向量中大于0.5的所有值,而用-1替换小于0.5的任何值。我知道如何通过两个连续的“替换”调用来做到这一点,例如:
my_nums <- c(0.2,0.8,0.3,0.4)
my_nums_adj_temp <- replace(my_nums,my_nums>0.5,1)
my_nums_adj <- replace(my_nums_adj_temp,my_nums<0.5,-1)
因此“ my_nums”来自
> my_nums
[1] 0.2 0.8 0.3 0.4
到
> my_nums_adj
[1] -1 1 -1 -1
但是有一种方法可以仅通过一次调用“替换”来实现?
答案 0 :(得分:1)
这将返回与问题代码相同的值;但是,如果您真的想为输入组件返回0(如果该输入为.5)(而不是返回问题代码返回的.5),则省略第二项,或者如果您想在其中返回其他值这种情况下,请用该值替换第二个.5。
sign(my_nums - .5) + .5 * (my_nums == .5)
## [1] -1 1 -1 -1
如果您要在输入大于或等于.5时返回1,而在输入小于或等于1.时返回-1,则可以使用它。对于输入的每个分量,两个项之一只能为非零,因此每个分量的结果将为1或-1。
(my_nums >= .5) - (my_nums < .5)