首页 > 解决方案 > 将不同的数据应用于 R 中的函数

问题描述

我有以下数据框:

library(tidyverse)

set.seed(1234)

df <- data.frame(
  x = seq(1, 100, 1),
  y = rnorm(100)
)

我使用不同的结应用平滑样条曲线:

nknots <- seq(4, 15, 1)

output <- map(nknots, ~ smooth.spline(x = df$x, y = df$y, nknots = .x))

我现在需要做的是使用 2 点和 3 点平均值应用相同的函数:

df_2 <- df %>% 
  group_by(., x = round(.$x/2)*2) %>%
  summarise_all(funs(mean))

df_3 <- df %>% 
  group_by(., x = round(.$x/3)*3) %>%
  summarise_all(funs(mean))

总之,我需要将我使用的函数output与以下数据框一起应用:

当然,这是一个最小的例子,所以我正在寻找一种有效的方法。最好带purrr包。

标签: rtidyversepurrr

解决方案


使用 lapply 和库zoo以更简单优雅的方式计算移动平均线:

library(zoo)

lapply(1:3,function(roll){
  dftemp <- as.data.frame(rollmean(df,roll))
  map(nknots, ~ smooth.spline(x = dftemp$x, y = dftemp$y, nknots = .x))
  })

推荐阅读