альтернатива `lapply` при применении функции к столбцам - PullRequest
1 голос
/ 26 сентября 2019

Как правильно применить функцию к столбцам фрейма данных?

У меня есть некоторые данные, подобные следующим:

Я хочу вычислить простое скользящее среднее для каждогоколонка.Я могу использовать lapply, но он помещает данные в виде списков, если возможно, я хотел бы создать новые столбцы или новый фрейм данных.

Я пробовал sapply, mapply и т. Д.

Данные:

require(quantmod)
require(PerformanceAnalytics)
library(data.table)


from <- "2017-01-01"
to <- "2018-12-01"

symbols <- c('GOOG', 'MSFT', 'AAPL')

dataEnv <- new.env()
getSymbols(symbols, from=from, to = to, src = "yahoo", adjust = TRUE, env = dataEnv) 

data <- do.call(merge, eapply(dataEnv, Ad))
colnames(data) <- gsub(".Adjusted", "", colnames(data))

x <- lapply(data, function(x) SMA(x, n = 10))

Например, создается новый столбец:

data$googleSMA <- SMA(data$GOOG)

1 Ответ

1 голос
/ 26 сентября 2019

Это xts объект.lapply работает на data.frame и list.Здесь мы можем использовать apply

apply(data, 2, SMA, n = 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...