向固定百分比添加/减去矢量数

时间:2018-01-26 22:29:15

标签: r

我希望在向量中为每个数字随机添加或减去固定的百分比:

nums <- c(1,1,1,1,1)

在这种情况下,我希望随机地随机调整1%0.05%。 这意味着任何给定的1可以随机地为1.05或.95。

我正在尝试这样做:

> 1 + (1*0.05)
[1] 1.05
> 1 + (1*-0.05)
[1] 0.95

# Code to sample the 0.05 or -0.05
    nums <- c(1,1,1,1,1)
    perc <- c(0.05,-0.05)
    new <- nums + (nums*sample(perc,1))

所需的输出应为:

(1.05,1.05,.95,.95,1.05)

但是我得到了:

> new
[1] 0.95 0.95 0.95 0.95 0.95

我看到错误..它实际上将向量中的百分比变化应用于单独的1x数字。

1 个答案:

答案 0 :(得分:0)

这有效:

noise_adjust <- function(x){
  x + ((x)*sample(perc,1))
}
sapply(nums,noise_adjust)

> sapply(nums,noise_adjust)
 [1] 0.95 1.05 0.95 0.95 1.05 1.05 1.05 1.05 0.95 0.95 1.05 1.05 1.05 1.05 1.05 0.95 0.95 0.95 0.95 0.95