【问题标题】:How can I randomly change the sign of numbers in a vector?如何随机更改向量中数字的符号?
【发布时间】:2021-04-21 17:51:42
【问题描述】:

我有一个很长的数字向量,它们的符号不同(例如):

data <- c(1,-23,67,-21,10,32,64,-34,-6,10)

在 R 中工作,如何创建一个包含相同数字列表的新向量,但给它们一个随机符号(正数或负数)?对于每个数字,它为负数的概率应该是 0.5。

【问题讨论】:

    标签: r random sign


    【解决方案1】:

    有很多选择,但是

    sample(c(-1,1), size=length(data), replace=TRUE) * abs(data)
    

    应该可以。您还可以乘以 sign(runif(length(data))-0.5)sign(runif(length(data),-1,1)) [两者都应该比 sample() 更有效,尽管在这种情况下它并不重要]。

    【讨论】:

    • 当然,我错过了那部分 :=)
    • 我喜欢runif 部分,即data * sign(runif(data, -1, 1))
    • 您可以简单地与abs(data) 相乘,而不仅仅是data,这样结果将具有50/50 的正负分布...如果负号的概率应该是0.5而不仅仅是改变符号的概率应该是 0.5
    • 谢谢大家!这是正确的,因为我不想要 50/50 的分布,我希望每个数字的符号由硬币翻转来确定。
    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多