У меня есть data.frame с 3 столбцами: дата, ставка, цена. Я хочу добавить столбцы, которые поступают из матрицы, после ставки и до цены.
df = tibble('date' = c('01/01/2000', '02/01/2000', '03/01/2000'),
'rate' = c(7.50, 6.50, 5.54),
'price' = c(92, 94, 96))
Я вычислил лаги скорости, используя функцию, которая выводит матрицу:
rate_Lags = matrix(data = c(NA, 7.50, 5.54, NA, NA, 7.50), ncol=2, dimnames=list(c(), c('rate_tMinus1', 'rate_tMinus2'))
Я хочу вставить эти запаздывания после курса (и до цены), используя индексирование имен, а не порядок столбцов.
Функция add_column
из пакета tibble (Добавление столбца между двумя columns in a data.frame) не работает, потому что он принимает только атомарный вектор (следовательно, если у меня есть 10 задержек, мне придется вызывать add_column 10 раз). Я мог бы использовать apply
в моей rate_Lags
матрице. Однако затем я теряю dimnames из моей rate_Lags
матрицы.
Использование индексации номеров (подмножество) (https://stat.ethz.ch/pipermail/r-help/2011-August/285534.html) мог бы работать, если бы я знал позицию определенного имени столбца (любая функция, которая извлекает позицию имени столбца?).
Есть ли простой способ вставить группу столбцов s в определенную позицию в объекте фрейма данных / тиббла?