嘿,我非常着迷于此示例中的r设置。我需要一个函数一次绘制一个数字(没有重复的数字)。输出,我希望它是一个长度为20的列表,每个元素都有一个数字标量,代表随机选择的数字。
基本上,我需要将值设置为:“ draw1”,“ draw2”等...
到目前为止,我有类似的东西:
draw <- lapply(x=list(draw=1:80), FUN = sample, size 20, replace = F)
答案 0 :(得分:0)
如果我错了,我想我得到了我需要的东西,但是我错了。 。
draw <- function(){
deal <- as.list(sample(1:80, size=20, replace=FALSE))
names(deal) <- paste("draw", 1:20, sep="")
return(deal)
}
然后通过调用:
round.one <- draw()
round.one
我得到20个条目的列表,每个条目分别命名为Draw1,Draw2,Draw3等。
答案 1 :(得分:0)
现在,我对您的要求有了进一步的了解,对它们进行了一些修改/改进
我将draw
设为样本数量n
的函数;这样便可以轻松绘制不同的样本大小。
您可以使用setNames
来构造list
并一次性命名list
元素的名称。
我们在一起最终以
draw <- function(n = 20) setNames(
as.list(sample(1:80, size = n, replace = FALSE)),
paste("draw", 1:n, sep=""))
在此情况下,另一个有用的功能是replicate
,它使您可以Nrep
重复绘制20个样本的过程,并将结果存储在matrix
Nrep <- 10
mat <- replicate(Nrep, draw())
mat
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#draw1 39 71 18 55 55 26 70 24 30 24
#draw2 64 6 79 63 15 57 77 66 10 45
#draw3 59 36 39 64 42 20 68 33 61 27
#draw4 27 69 49 7 62 24 34 1 6 77
#draw5 62 54 1 13 24 53 15 4 60 17
#draw6 19 23 22 3 52 32 7 55 79 79
#draw7 44 44 73 18 58 64 44 6 58 31
#draw8 12 64 56 67 20 40 6 74 27 40
#draw9 13 33 5 1 49 73 38 46 45 59
#draw10 17 24 58 17 71 61 79 30 66 1
#draw11 56 40 9 12 39 27 4 31 8 48
#draw12 77 29 29 11 65 12 42 73 50 61
#draw13 76 57 64 45 79 13 54 19 11 28
#draw14 9 11 38 33 16 58 41 54 18 60
#draw15 66 74 76 46 32 23 2 7 52 54
#draw16 50 1 63 19 30 51 26 18 39 4
#draw17 20 21 50 79 51 5 75 9 7 69
#draw18 2 60 6 65 1 16 66 42 75 32
#draw19 43 65 23 73 47 63 53 61 44 74
#draw20 69 5 30 5 64 77 20 13 17 13
现在可以轻松地matrix
以行(apply(mat, 1, ...)
)或列方式(apply(mat, 2, ...)
)进行操作。