我有以下列表
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
答案 0 :(得分:2)
我怀疑ifelse
只运行sample()
一次,并为条件为TRUE的每个元素返回此随机值。
你可以改为使用
sapply(x,function(y){
ifelse(y == "a", sample(c(1:100), 1), 0)
})
答案 1 :(得分:1)
如上所述,$("#" + targetid + " input[name=" + name + "][value=" + value + "]").click();
只生成一个号码。要修复它,sample
应如下所示:
ifelse
或者,如果我正确理解你想要什么,甚至更短的版本:
x = rep("a", 100)
ifelse(x == "a", sample(c(1:100), length(x)), 0)
如果你想用替换采样替换你的“非a”值(每个数字可以多次出现),我们终于得到这个代码:
x = rep("a", 100)
ifelse(x == "a", sample(length(x)), 0)
答案 2 :(得分:0)
我试图解释你的问题:
x <- sample(c("a", "b"), 100, replace = TRUE)
res <- rep(0, length(x))
res[which(x == "a")] <- sample(length(x), sum(x == "a"), rep = TRUE)
看ifelse(x == "a", sample(c(1:100), 1), 0)
,我猜你要做的就是这个:
for(i in 1:length(x)){res[i] <- ifelse(x[i] == "a", sample(100, 1), 0)}
所以似乎rep = TRUE
是必要的。此外,x == "a"
返回一个TRUE / FALSE向量,但它也可以通过as.numeric(x == "a")
转换为数字向量,而不是返回1/0。使用不sum
的{{1}}仍然有效,并会返回as.numeric
中等于x
的多个元素。