Как связать несколько целых чисел в вектор - PullRequest
0 голосов
/ 19 октября 2019

У меня есть следующие объекты xts:

> b1
                DJI   GSPC    IXIC    RUT
2007-01-03 12474.52 1416.6 2423.16 787.42
> c1
           DJI.SMA50 GSPC.SMA50 IXIC.SMA50 RUT.SMA50
2007-01-03  12254.36   1398.677    2410.07  780.2584
> e1
                DJI   GSPC    IXIC    RUT DJI.SMA50 GSPC.SMA50 IXIC.SMA50 RUT.SMA50 DJI.SMA200 GSPC.SMA200 IXIC.SMA200
2007-01-03 12474.52 1416.6 2423.16 787.42  12254.36   1398.677    2410.07  780.2584   11531.81    1318.803    2258.984
           RUT.SMA200
2007-01-03   738.7953

и следующая функция:

fun_cols_change <- function(data) {
  for (i in seq_along(colnames(b1))) {

    x <- c(i)
    y <- c(ncol(b1) + i)
    z <- c(ncol(merge(b1, c1)) + i)

    print(x)
    print(y)
    print(z)

  }
}

Когда я выполняю функцию на e1:

fun_cols_change(e1)

это приводит к:

[1] 1
[1] 5
[1] 9
[1] 2
[1] 6
[1] 10
[1] 3
[1] 7
[1] 11
[1] 4
[1] 8
[1] 12

Как я могу связать эти целые числа в вектор, который будет выглядеть так:

c(1,5,9,2,6,10,3,7,11,4,8,12)

Я пробовал разные комбинации с lapply,do.call, merge, cbind, но ничего не получилось.

1 Ответ

0 голосов
/ 19 октября 2019

Я уверен, что есть несколько способов сделать это. Вот один из способов построить вектор в вашей функции:

fun_cols_change <- function(data) {

  my_vec = c()

  for (i in seq_along(colnames(b1))) {

    x <- c(i)
    y <- c(ncol(b1) + i)
    z <- c(ncol(merge(b1, c1)) + i)

    print(x)
    print(y)
    print(z)

    my_vec <- c(my_vec, x, y, z)

  }
  return(my_vec)
}

fun_cols_change(e1) 

[1]  1  5  9  2  6 10  3  7 11  4  8 12
...