gpt4 book ai didi

r - 使用箭头分配函数作为 R purrr map2

转载 作者:行者123 更新时间:2023-12-01 23:00:17 24 4
gpt4 key购买 nike

我有一个栅格列表:

filelist <- as.list(c("rasterA", "rasterB") # name them
rasterlist <- lapply(filelist, function(x) raster::raster(x)) # read them in

以及与这些栅格对应的 CRSes 列表:

crslist <- as.list(c("crsA.Rds", "crsB.Rds")) # name them
crslist %<>% lapply(function(x) readRDS(x)) # read them in

要在您使用的光栅中填充 @crs 槽(例如):

raster::crs(rasterA) <- crsA

但我不知道如何在 purrr::map2 调用中使用这个箭头赋值。 R 备忘单中的示例是 map2(x, y, sum),但 sum 适用于向量,是无方向的,并且在括号内包含它的所有项。

看了map2的帮助,试了一下公式格式:

purrr::map2(rasterlist, crslist, ~ raster::crs(.x) <- .y)

但没有骰子:

Error in as_mapper(.f, ...) : object '.y' not found

有人知道我该怎么做吗?目前我使用的是一个简单的循环,但我正在努力强制自己学习映射并不断碰壁。

for (i in length(rasterlist)) {
crs(rasterlist[[i]]) <- crslist[[i]]
}

谢谢!

起始条件:

NA crs

for循环后:

forloop

在 raster_assigner 函数之后:

rasterassigner

希望这是可以挽救的,因为我还有其他类似的用例。干杯!

最佳答案

我们可能需要

purrr::map2(rasterlist, crslist, ~ {crs(.x) <- .y;.x})

它与栅格无关——因为下面的简单示例显示了相同的错误

> map2(list(1, 2, 3), list(3, 4, 5), ~ names(.x) <- .y)
Error in as_mapper(.f, ...) : object '.y' not found
> map2(list(1, 2, 3), list(3, 4, 5), ~ {names(.x) <- .y; .x})
[[1]]
3
1

[[2]]
4
2

[[3]]
5
3

然而,这不会在 Map 中返回错误(但它是不正确的,因为返回的输出没有名称,除非我们用 {} 和返回 x

> Map(function(x, y) names(x) <- y, list(1, 2, 3), list(3, 4, 5))
[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5

关于r - 使用箭头分配函数作为 R purrr map2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72063819/

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