Во-первых, нам нужно получить данные в виде списка (каждый data.frame
получит свою запись в списке).Затем мы можем использовать любую из наших итеративных функций списка, чтобы получить желаемый результат.
temp_data <- lapply(ls(pattern = "USD"), get) # get data into a list
temp_data2 <- lapply(temp_data, function(x) mutate(x, Return = Delt(Close)*100))
Как заметил @akrun, есть более компактный способ сделать это:
lapply(mget(ls(pattern = "USD")), transform, Return = Delt(Close) * 100)
Если вы хотите придерживаться tidyverse
глаголов, это будет:
lapply(mget(ls(pattern = "USD")), function(x) x %>% mutate(Return = Delt(Close) * 100))
Я мог бы заставить код работать, используя ваши данные примера:
sdat1 <-structure(list(
Date = c("2015-12-31","2016-01-01",
"2016-01-02","2016-01-03","2016-01-04"),
Close = c(430, 434, 434, 431, 433)),
class = "data.frame",
row.names = c("1", "2", "3", "4", "5"))
sdat4 <- sdat3 <- sdat2 <- sdat1
lapply(mget(ls(pattern = 'sdat')),
FUN = function(x) x %>% mutate(Return = Delt(Close)))