我正在尝试使用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函数没有找到我想要它查看的列,并且对于应用程序族来说是新手,所以我不确定如何做到这一点(或者甚至可能)。本质上,我需要对河流中的日常水位进行插值,并且我想以最有效的方式做到这一点,同时保持日子的分开。
根据评论进行编辑:我正在尝试预测每个数据帧的均值,最小值和最大值。
答案 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