更改向量中的多个值

时间:2014-07-16 16:41:16

标签: r

我有一些值的位置我希望在两个值的向量中更改if 积极的或消极的。

library(extremevalues)
x<-c(-1,3,4,5,-7,-6,1,-3,0,0,90,8,6,7,25,3,4,-2,1,3,-5,4,6,-8,5,-7,4,-5,5,44,6,2,3,-4,5,-6,1,2,
-35,4,4,-3,2,-1,2,4,-5,8,-35)
g<-getOutliers(x, method="I")

#location values in the vector
s<-c(g$iRight,g$iLeft)
s
[1] 11 15 30 39 49

#Values to change depending on the sign of the element in x. If positive then a if 
negative then b

a<-mean(x > 0)
a
[1] 0.6326531

b<-mean(x < 0)
b
[1] 0.3265306

我知道如何使用replace函数逐个替换值。但是,如果另一个向量x将与不同的值一起使用,则位置和值的数量可能会发生变化,您将如何构造一个表达式来指示在x中的向量s给出的位置中更改x的一些元素的值和a的值b取决于原始值是正还是负。 (如果正a将替换x中的元素,如果负b将替换x中的元素

谢谢

1 个答案:

答案 0 :(得分:1)

x[s] <- ifelse(x[s] < 0, mean(x < 0), mean(x > 0))