R нужна функция, возвращающая список длиной 20 с именами - PullRequest
0 голосов
/ 06 марта 2019

Привет, я очень застрял на получении этого примера настройки r. Мне нужна функция, которая называется рисовать по одному номеру за раз (без дубликатов). В итоге я хочу, чтобы это был список длиной 20 с каждым элементом числовым скаляром, представляющим произвольно выбранное число.

По сути, мне нужно, чтобы значения были чем-то вроде: "draw1", "draw2" и т.д ...

пока у меня есть что-то вроде:

draw <- lapply(x=list(draw=1:80), FUN = sample, size 20, replace = F)

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Теперь, когда я лучше понимаю, что вы ищете, вот некоторые модификации / улучшения

  1. Я бы сделал draw функцией количества образцов n; таким образом можно легко рисовать образцы разных размеров.

  2. Вы можете использовать setNames для создания list и для присвоения имен элементам list за один раз.

Взятые вместе, мы получаем

    draw <- function(n = 20) setNames(
        as.list(sample(1:80, size = n, replace = FALSE)),
        paste("draw", 1:n, sep=""))

Еще одна полезная функция в этом контексте - replicate, которая позволяет вам повторить процесс рисования 20 образцов Nrep раз, сохраняя результаты в 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, ...)).

0 голосов
/ 06 марта 2019

Ну, я думаю, что получил то, что мне было нужно, если я ошибаюсь, я ошибаюсь, но.,.

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 и т. Д..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...