У меня есть датафрейм pif , который содержит информацию о некоторых инвестиционных фондах, и список names , который содержит названия указанных фондов (или просто pif 's имена переменных):
names
[1] mercury_stock vtb_bric ...
и так далее.
Теперь мне нужно вычислить некоторую важную информацию. Мой желаемый вывод - это кадры с данными о доходах для каждого фонда, которые я затем связываю вместе, используя cbind
.
Для этой операции у меня уже есть функция цикла:
i=c(1:1584)
pif<-cbind(i, pif)
for ( i in 2:1584)
{
d_mercury_stock[i] = (pif$mercury_stock[i] - pif$mercury_stock[i-1])/pif$mercury_stock[i-1]
d_vtb_bric[i] = (pif$vtb_bric[i] - pif$vtb_bric[i-1])/pif$vtb_bric[i-1]
...
}
yield<-cbind(d_mercury_stock, d_vtb_bric, ...)
Она работает совершенно нормально , но мне нужно вручную выполнить эту функцию, чтобы получить результаты для каждого фонда - и в кадре данных более 30, то есть я должен скопировать и вставить одну и ту же функцию тридцать раз.
Лучшим решением будет второй цикл, который запускает мою функцию, используя элементы списка names и каким-то образом вставляя туда каждую переменную.
К сожалению, я не могу делайте это, так как я относительно новичок в петлях и повторяющихся функциях. Я подозреваю, что или lapply
/ sapply
или пользовательская функция может быть решением здесь. Что бы вы могли посоветовать?