#R # Нечисловой c аргумент для двоичного оператора #xts объект * целое число - PullRequest
0 голосов
/ 20 июня 2020

У меня есть объект xts. Таким образом, временной ряд «непогашенной доли» компании упорядочен по дате. Я хочу умножить временной ряд «находящихся в обращении акций» на коэффициент 7, чтобы учесть разделение акций.

> outstanding_shares_xts <- shares_xts1[,1]
> adjusted <- outstanding_shares_xts*7

Ошибка: нечисловой c аргумент для бинарного оператора.

ts «oustanding_shares_xts» - это столбец целых чисел. Есть у кого-нибудь идея ??

1 Ответ

1 голос
/ 20 июня 2020

Я предполагаю, что они могут выглядеть как целые числа, но на самом деле не являются.

Отслеживание:

  • Сначала я думал, что это может быть [ -vs- [[ подмножество столбцов, так как tibble(a=1:2)[,1] не создает целочисленный вектор (он создает таблицу с одним столбцом), но tibble(a=1:2)[,1] * 7 все еще работает.

  • Тогда я подумал, что это может быть из-за factor s, но это другая ошибка:

    data.frame(a=factor(1:2))[,1]*7
    # Warning in Ops.factor(data.frame(a = factor(1:2))[, 1], 7) :
    #   '*' not meaningful for factors
    # [1] NA NA
    
  • Возможно, у вас есть character значения, которые выглядят как целые числа.

    dat <- data.frame(a=as.character(1:2))
    dat
    #   a
    # 1 1
    # 2 2
    dat[,1]*7
    # Error in dat[, 1] * 7 : non-numeric argument to binary operator
    

    Попробуйте преобразовать этот столбец в целое число, например,

    str(dat)
    # 'data.frame': 2 obs. of  1 variable:
    #  $ a: chr  "1" "2"
    dat$a <- as.integer(dat$a)
    str(dat)
    # 'data.frame': 2 obs. of  1 variable:
    #  $ a: int  1 2
    dat[,1]*7
    # [1]  7 14
    
...