2013-12-13 2 views
0

Я пытаюсь написать функцию в R для простой регрессии временных рядов (результатом этой функции является вывод для более сложных). В первой части я определяю переменные и создаю некоторые задержки для функции, которые называются ar_i в зависимости от используемого отставания.Удаление котировок в выход функции в R

Однако во второй части я пытаюсь объединить эти задержки в матрице, используя функцию cbind для переменных, которые были определены первоначально. Как вы можете видеть, выход не является ожидаемой матрицей, а именами самих задержек. Я попытался решить эту проблему, используя функции noquote() и cat(), но они, похоже, не работают.

Есть ли у вас какие-либо предложения? Заранее спасибо!!!

Pd: код и результаты приведены ниже.

trans  <- dlpib 
ar   <- dlpib 
linear  <- 1:4 

for (i in linear){ 
    assign(paste("ar_",i,sep = ""), lag(ar,k=-i)) 
} 

linear_dat <- cbind(paste("ar_",linear, collapse=',', sep = "")) 

> linear_dat 
    [,1]     
[1,] "ar_1,ar_2,ar_3,ar_4" 
+0

Альтернативой @ josilber-х (лучше) раствор использовать 'get' внутри' cbind' вызова, который является то, что вы в настоящее время безуспешно пытаетесь сделать это. – Thomas

+0

Привет, Томас. Благодарю за ваш ответ. Я попробовал cbind (get (paste ("ar _", linear, collapse = ',', sep = ""))). Это тоже не работает. Я получаю: Ошибка в get (paste ("ar_", linear, collapse = ",", sep = "")): Объект 'ar_1, ar_2, ar_3, ar_4' не найден – Javier

ответ

1

Я думаю, что вы могли бы более эффективно идти об этом с sapply:

linear <- 1:4 
linear_list <- lapply(linear, function(i) lag(ar, k=-i)) 
linear_dat <- do.call(cbind, linear_list) 
colnames(linear_dat) <- paste0("ar_", linear) 
Смежные вопросы