问题

在数据帧的列中应用函数的正确方法是什么?

我有一些类似于以下的数据:

我想计算每列的简单移动平均值.我可以使用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)

  最佳答案

它是一个xts对象. lapply适用于data.framelist.在这里,我们可以使用apply

 apply(data, 2, SMA, n = 10)
 

  相同标签的其他问题

r