Повторяющийся расчет с разным DF - PullRequest
0 голосов
/ 25 июня 2019

У меня есть около 10 DF, и я хотел бы выполнить следующие вычисления для всех из них, а затем выдать 10 новых DF.

Мне удалось заставить это работать на 1 DF, но вместо того, чтобы скопировать код и изменить имена, 10 раз, я хотел посмотреть, есть ли способ сделать это. В идеале, я заканчиваю с 1 DF и 10 разных колонок, но я доволен чем угодно

Я пытаюсь сделать следующие расчеты:

temp <- merge (x=DF1, y=temp1, by = c("name"), all.x= TRUE) 
asset_column <-grep("^Assets_", names(DF1))
return_column <-grep("^Return_", names(DF1))
OutputDF <- 
     stack(colSums(t(t(temp[asset_column])/colSums(temp[asset_column], 
      na.rm=TRUE)) * US_only[return_column],na.rm =TRUE))
OutputDF['values'] = OutputDF['values']/100

1 Ответ

2 голосов
/ 25 июня 2019

Если это повторяющиеся вычисления в list, переберите list с помощью lapply и сделайте тот же код, где мы указываем первый набор данных из вызова анонимной функции (function(x) x)

out <- lapply(lst1, function(x)  {
       temp <- merge (x, y=temp1, by = c("name"), all.x= TRUE)

        asset_column <-grep("^Assets_", names(x))
        return_column <-grep("^Return_", names(x))
      OutputDF <- 
 stack(colSums(t(t(temp[asset_column])/colSums(temp[asset_column], 
  na.rm=TRUE)) * US_only[return_column],na.rm =TRUE))
  OutputDF['values'] = OutputDF['values']/100
  OutputDF
})

Здесь вывод также представляет собой list из data.frame с, который может быть сохранен в list как таковой или извлечен с помощью [[

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...