在数据帧列表上进行线性插值

时间:2019-05-21 20:50:28

标签: r lapply

我正在尝试使用Apply系列函数对数据帧列表中的每个数据帧(总计1038个)执行平均水位的线性插值,但是在定义插值函数中的变量时遇到了麻烦指向每个数据框中的列。

这是我的名单的首位

head(df_list)
$`1928-01-01`
      station date_measured daily_mean max min mean      lon      lat
8267 20250000    1928-01-01          0 453 193  272 -49.5519 -15.2753
8268 20250000    1928-01-01          0 453 191  276 -49.5519 -15.2753

$`1928-02-01`
      station date_measured daily_mean max min mean      lon      lat
8269 20250000    1928-02-01          0  NA  NA   NA -49.5519 -15.2753
8270 20250000    1928-02-01          0  NA  NA   NA -49.5519 -15.2753

$`1928-03-01`
      station date_measured daily_mean max min mean      lon      lat
8271 20250000    1928-03-01          0 394 219  282 -49.5519 -15.2753
8272 20250000    1928-03-01          0 382 218  281 -49.5519 -15.2753

$`1928-04-01`
      station date_measured daily_mean max min mean      lon      lat
8273 20250000    1928-04-01          0 280 176  224 -49.5519 -15.2753
8274 20250000    1928-04-01          0 287 178  223 -49.5519 -15.2753

$`1928-05-01`
      station date_measured daily_mean max min mean      lon      lat
8275 20250000    1928-05-01          0 199 161  172 -49.5519 -15.2753
8276 20250000    1928-05-01          0 197 162  173 -49.5519 -15.2753

$`1928-06-01`
      station date_measured daily_mean max min mean      lon      lat
8277 20250000    1928-06-01          0 174 132  149 -49.5519 -15.2753
8278 20250000    1928-06-01          0 173 132  149 -49.5519 -15.2753

这是我最初尝试的:

daily_int <- lapply(df_list, function(x) interp(x=lon,y=lat,z=mean, method="linear"))

这导致了以下错误:

 Error in interp(x = lon, y = lat, z = mean, method = "linear") : 
  object 'lat' not found 

我意识到interp函数没有找到我想要它查看的列,并且对于应用程序族来说是新手,所以我不确定如何做到这一点(或者甚至可能)。本质上,我需要对河流中的日常水位进行插值,并且我想以最有效的方式做到这一点,同时保持日子的分开。

根据评论进行编辑:我正在尝试预测每个数据帧的均值,最小值和最大值。

2 个答案:

答案 0 :(得分:2)

我不确定是否要尝试使用interp函数预测哪些值

就lapply而言:列表中的每个值都将成为函数中的 x 。 因此,使用with()可以在interp函数中分配要使用的数据帧。

daily_int <- lapply(df_list, function(x) {
    out <- with(x,interp(x=lon,y=lat,z=mean, method="linear"))
    return(out)
})

我没有R可以测试此功能,并且对插值不熟悉,所以以后会更新!

答案 1 :(得分:1)

我不熟悉您使用的filter函数,但是通常,如果您想在const type_calendar_holidays = map(filter(holidays, ({ holiday }) => holiday == 1), 'day'); 循环中访问数据帧的列名,则应该可以执行以下操作:

interp

行得通吗?如果不能,那么可能会起作用:

lapply