Как сохранить образцы в массиве или матрице в R? - PullRequest
0 голосов
/ 19 февраля 2020

У меня все в порядке с Python, Numpy, но при попытке R и этой, казалось бы, простой операции я застрял в R.

Это то, что у меня есть, но я получаю ошибку number of items to replace is not a multiple of replacement length.

# find sample variance with n
samples <- matrix(0, nrow=num_samples, ncol=samp_size)
for(i in 1:10000){
  temp <- sample(population, samp_size, replace=TRUE)
  samples[i] = temp
}
samples[0]

Я не зацикливался на использовании матриц, может быть массивом, вектором, списком или чем-то еще, но только некоторыми стандартными способами сделать это, потому что поиск в Интернете не дал мне быстрого ответа на этот вопрос c работа.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Вы пробовали копировать?

samples <- t(replicate(n = num_samples, sample(population, samp_size, replace=TRUE),simplify = "array"))

Это вернет матрицу измерений samp_size x num_samples.

2 голосов
/ 19 февраля 2020

Самое простое решение - просто инициализировать samples с вашими фактическими образцами:

set.seed(123)
n_samples <- 5
n_obs <- 10
population <- letters

samples <- matrix(sample(population, n_obs*n_samples, replace=TRUE),  
                  nrow=n_samples, ncol=n_obs)

Но чтобы сделать это так, как вы начали, вам просто нужно дать R знать, что вы хотите поместите записи во все столбцы samples, например: samples[i, ].

Это похоже на использование синтаксиса : в Numpy: array[i, :].

samples <- matrix(0, nrow=n_samples, ncol=n_obs)

for(i in 1:n_samples){
  temp <- sample(population, n_obs, replace=TRUE)
  samples[i,] = temp
}

В любом случае, вывод одинаков:

samples
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "h"  "u"  "k"  "w"  "y"  "b"  "n"  "x"  "o"  "l"  
[2,] "y"  "l"  "r"  "o"  "c"  "x"  "g"  "b"  "i"  "y"  
[3,] "x"  "s"  "q"  "z"  "r"  "s"  "o"  "p"  "h"  "d"  
[4,] "z"  "x"  "r"  "u"  "a"  "m"  "t"  "f"  "i"  "g"  
[5,] "d"  "k"  "k"  "j"  "d"  "d"  "g"  "m"  "g"  "w"  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...