Объединить два массива в R, чередуя их элементы - PullRequest
0 голосов
/ 26 ноября 2018

Предположим, у меня есть два массива одинаковой длины (например, 1000), array1 и array2, которые выглядят как

   array 1= 0.7828479 0.7782587 0.697296 0.7847533 0.7963145 0.7742886 0.6367928 ...
   array 2= 0.5324373 -0.5765472 -0.5020422 -0.3265736 -0.09438474 0.1368133 ...

, и я хочу объединить их в новый массив, который выглядит как:

   first 20 elements of array 1 (i.e. array1[1], array1[2],...,array1[20])
   first 10 elements of array 2 (i.e. array2[1], array2[2],...,array2[10])
   second 20 elements of array 1 (i.e. array1[21], array1[2],...,array1[40])
   second 10 elements of array 2 (i.e. array2[11], array2[2],...,array2[20])

и так далее, пока все элементы одного из массивов не были израсходованы.Тогда array1 всегда будет использоваться первым, и результирующий вектор будет иметь 20 и 10 последовательных элементов из массивов 1 и 2 соответственно.

1 Ответ

0 голосов
/ 26 ноября 2018

Кажется, вы используете векторы.Это работает?(Я использую несколько случайно инициализированных векторов).Это предполагает, что размер ваших векторов кратен числу элементов, которые вы хотите использовать каждый раз.

vec1 <- rnorm(100)
vec2 <- rnorm(100)
step1 <- 20
step2 <- 10
as.vector(sapply(0 : (length(vec1) / step1 - 1), function(idx){
  c(vec1[1 : step1 + (idx * step1)], vec2[1 : step2 + (idx * step2)])}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...