我有以下清单
x = rep("a", 100)
如果我使用下表
ifelse(x == "a", sample(c(1:100), 1), 0)
当我第一次运行时,我得到以下输出。
[1] 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
[22] 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
[43] 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
[64] 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
[85] 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
我看不到 1 到 100 之间的随机样本。我应该如何实现它。我想要输出的随机性。预期输出示例如下:
[1] 8 81 46 71 97 18 37 82 74 34 12 5 26 6 66 55
[17] 2 84 68 9 29 7 38 4 64 90 39 54 75 45 20 42
[33] 79 36 78 13 47 85 27 69 23 62 15 63 76 25 77 96
[49] 98 11 53 83 30 41 91 43 88 28 65 10 49 99 56 67
[65] 16 95 32 92 14 86 50 80 94 58 21 87 51 17 70 1
[81] 33 57 59 73 52 22 31 44 100 61 60 35 89 24 48 72
[97] 40 19 3 93
如上所述,您的sample
只生成一个数字。要修复它你的ifelse
应该是这样的:
x = rep("a", 100)
ifelse(x == "a", sample(c(1:100), length(x)), 0)
或者,如果我正确理解你想要什么,甚至更短的版本:
x = rep("a", 100)
ifelse(x == "a", sample(length(x)), 0)
如果您想用替换采样替换“不是”值(每个数字可以出现多次),我们最终得到以下代码:
x = rep(c("a","b"), 50)
ifelse(x == "a", sample(length(x), replace = TRUE), 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)