我希望在向量中为每个数字随机添加或减去固定的百分比:
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数字。
答案 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