【问题标题】:lapply for a function that requires indexinglapply 用于需要索引的函数
【发布时间】:2014-02-20 16:52:47
【问题描述】:

我正在尝试沿着价格向量查找日志返回,但不确定如何调用函数内的索引以用于应用函数。

这是我现在使用的:

set.seed(456)
df1 <- data.frame(id = 1:20, col1 = round( runif(20) * 100 ,0))
df1[,'logDiff'] <- NA

for(i in 2:20){
df1[i,'logDiff'] <- log(df1[i,'col1'] / df1[i-1,'col1'])
}

有什么建议吗?

编辑:

我有一堆专栏可以做这件事,并且想使用这样的东西:

colsToUse <- c('co1l','col2','col3')
lagLogDf <- as.data.frame(lapply(df1[,colsToUse], lagLogFunction(x)))

【问题讨论】:

    标签: r indexing apply


    【解决方案1】:

    如果你想要一个向量的连续值之间的差异,你可以使用diff函数:

    df1$logDiff = c(NA, diff(log(df1$col)))
    

    或者(例如,如果您的操作比累积差异更复杂),您可以使用 headtail 来获取缺少第一个元素和最后一个元素的向量,并在向量化中使用它们方式:

    df1$logDiff = c(NA, log(tail(df1$col1, -1) / head(df1$col1, -1)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-27
      • 2014-11-20
      • 2023-04-10
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      相关资源
      最近更新 更多