如何随机更改向量中数字的符号?
How can I randomly change the sign of numbers in a vector?
我有一个很长的数字向量,它们的符号不同(例如):
data <- c(1,-23,67,-21,10,32,64,-34,-6,10)
在 R 中工作,我如何创建一个包含相同数字列表的新向量,但给它们一个随机符号(正数或负数)?对于每个数字,它为负的概率应该是 0.5.
有很多选择,但是
sample(c(-1,1), size=length(data), replace=TRUE) * abs(data)
应该可以。您还可以乘以 sign(runif(length(data))-0.5)
或 sign(runif(length(data),-1,1))
[其中任何一个都应该比 sample()
更有效一点,尽管在这种情况下它并不重要]。
我有一个很长的数字向量,它们的符号不同(例如):
data <- c(1,-23,67,-21,10,32,64,-34,-6,10)
在 R 中工作,我如何创建一个包含相同数字列表的新向量,但给它们一个随机符号(正数或负数)?对于每个数字,它为负的概率应该是 0.5.
有很多选择,但是
sample(c(-1,1), size=length(data), replace=TRUE) * abs(data)
应该可以。您还可以乘以 sign(runif(length(data))-0.5)
或 sign(runif(length(data),-1,1))
[其中任何一个都应该比 sample()
更有效一点,尽管在这种情况下它并不重要]。