Я знаю, что эта ошибка хорошо известна, и я прочитал много вопросов, но я все еще не могу понять, почему у меня есть эта проблема в моем случае.
У меня есть объект xts с 74 столбцамис ценами закрытия определенных акций (данные из файла CSV).Вот как выглядят данные:
head(clPrices_xts[1:5,1:10])
ACINO.HLDG.N ACTELION.N ADDEX.N ALPIQ.HOLDING.N AMS ARBONIA.I ARBONIA.N ARPIDA.N ASCOM.N.10 ATTISHOLZ.N
1996-08-02 NA NA NA NA NA 700 NA NA NA 516
1996-08-05 NA NA NA NA NA 700 NA NA NA 530
1996-08-06 NA NA NA NA NA 700 NA NA NA 530
1996-08-07 NA NA NA NA NA NA NA NA NA 532
1996-08-08 NA NA NA NA NA 680 NA NA NA 540
str(clPrices_xts)
An ‘xts’ object on 1996-08-02/2017-09-13 containing:
Data: num [1:5900, 1:74] NA NA NA NA NA NA NA NA NA NA ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:74] "ACINO.HLDG.N" "ACTELION.N" "ADDEX.N" "ALPIQ.HOLDING.N" ...
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
NULL
Мне нужно манипулировать этим временным рядом (тс).Например, я хотел бы изменить значение для ACTELION.N в первый день ts:
clPrices_xts["1996-08-02"]$ACTELION.N
ACTELION.N
1996-08-02 NA
clPrices_xts["1996-08-02"]$ACTELION.N <- 0
Warning message:
In NextMethod(.Generic) :
number of items to replace is not a multiple of replacement length
У кого-нибудь есть идея, почему я получаю эту ошибку?Мне кажется, что есть только один элемент, который я хочу изменить ...
Примечание: не уверен, что это полезно, но я преобразую данные из длинных в широкие, используя функцию reshape2::dcast
, изатем к xts:
as.xts(clPrices_wide[,-1] %>%
apply(2, function(x) ifelse(is.nan(x), NA, x))
, order.by = clPrices_wide$TRADE_DATE)