Я пытаюсь создать функцию, которая автоматически создает многочлены объекта zoo
. Исходя из Python, типичным способом является создание списка вне цикла for
, а затем добавление списка внутри цикла. После этого я написал код, приведенный ниже в R:Использование merge.zoo для динамического создания переменных в R
library("zoo")
example<-zoo(2:8)
polynomial<-function(data, name, poly) {
##creating the catcher object that the polynomials will be attached to
returner<-data
##running the loop
for (i in 2:poly) {
#creating the polynomial
poly<-data^i
##print(paste(name, i), poly) ##done to confirm that paste worked correctly##
##appending the returner object
merge.zoo(returner, assign(paste(name, i), poly))
}
return(returner)
}
#run the function
output<-polynomial(example, "example", 4)
Однако, когда я запускаю функцию, R не выбрасывает никаких исключений, но объект вывода не имеет каких-либо дополнительных данных сверх того, что я первоначально создан в example
зоопарке объект. Я подозреваю, что я недопонимаю merge.zoo
или, возможно, теперь разрешено динамически переназначать имена полиномов внутри цикла.
Мысли?
Попробуйте это: 'ANS <- do.call (слияние, lapply (1: 4, функция (я) пример^я))' или это: 'ANS <- зоопарка (поли (например, 4, raw = TRUE), время (пример)) 'или это:' z <- lag (пример, rep (0, 4)); ans <- z^col (z) '. В каждом случае следуйте за ним, задав имена: 'names (ans) <- 1: 4'. –