gpt4 book ai didi

r - 如何在 R 中的列表列表上应用函数?

转载 作者:行者123 更新时间:2023-12-02 02:43:06 27 4
gpt4 key购买 nike

我正在尝试编写一个循环,在该循环中我将函数应用于列表列表。我想用 gstat 包的 idw 命令插入不同国家的温度(最大平均温度/MAXMEAN)。

idw 函数需要坐标(经度、纬度)和变量 MAXMEAN 的信息。这些组合在数据框列表“temperatures.coordinates”(看起来像这样:https://imgur.com/cr3PquB)中,这是一个包含 37 个国家/地区的列表,其中每个列表再次分为 12 个月(子列表长度为 12)。该函数还需要来自 grd.list 数据帧的信息,该数据帧是一个长度为 37 的列表,没有子列表。

应用于单个国家和单个月份,代码如下:

# Create a gridded structure

grd <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = 0.1), y = seq(from = y.range[1], to = y.range[2], by = 0.1))
coordinates(grd) <- ~x + y
gridded(grd) <- TRUE

#Interpolate surface and fix the output. Apply idw model for the data

idw <- idw(formula = MAXMEAN ~ 1, locations = temperatures.coordinates, newdata = grd)

我试过这样做:

# Create a gridded structure
grd <- list()
for (i in 1:length(countrybounds)) {
grd[[i]] <- expand.grid(x = seq(from = (x.range[[i]])[1], to = (x.range[[i]])[2], by = 0.1), y = seq(from = (y.range[[i]])[1], to = (y.range[[i]])[2], by = 0.1))
coordinates(grd[[i]]) <- ~x + y
gridded(grd[[i]]) <- TRUE
grd.list <- grd
gridded(grd.list[[i]]) <- TRUE
}

#Interpolate surface and fix the output. Apply idw model for the data

idw.list <- list()
for (i in 1:length(grd.list)) {
idw.list[[i]] <- list()
for (j in 1:length(grd[[i]])) {
idw.list[[i]][[j]] <- idw(formula = MAXMEAN ~ 1, locations = (temperatures.coordinates[[i]][[j]]), newdata = grd.list[[i]])
}
}

运行循环后我收到此错误:

Error in (function (classes, fdef, mtable)  : 
unable to find an inherited method for function ‘idw’ for signature ‘"formula", "data.frame"’

这在之前的类似循环中起作用,我在其中为温度坐标创建列表列表:

temperatures.coordinates <- list()
for(i in 1:length(monthlymean)){
temperatures.coordinates[[i]] <- list()
for(j in 1:length(monthlymean[[i]])){
temperatures.coordinates[[i]][[j]]<-(monthlymean[[i]][[j]])[,c("LON","LAT","MAXMEAN")]
}
}

我不确定我是否提供了所有相关信息并且我已经坚持了一段时间 - 感谢任何帮助,谢谢!

最佳答案

问题标题中的问题有以下答案:

a <- list(list(1,2), list(3,4))
res <- rapply(a, function(x) x^2)

如评论中所建议的,您需要提供数据示例以获得代码方面的帮助。

关于r - 如何在 R 中的列表列表上应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com