【问题标题】:How to amend R code slightly so that multiple images are saved instead of one?如何稍微修改 R 代码以便保存多个图像而不是一个?
【发布时间】:2021-06-28 04:53:40
【问题描述】:

我有一个 CSV 文件 (data),其中包含 10,000 多个纬度/经度坐标。一个样本:

Lat   Lon
13.4  100.3
13.1  100.2

下面的代码使用 API 密钥访问与这些纬度/经度坐标对应的 Google 街景图像,并尝试将它们保存到我的硬盘驱动器,文件名为“Lat-Lon.jpeg”,例如第一张图片应命名为“13.4-100.3.jpeg”

MyFunction <- function(Lat, Lon){
  google_streetview(
  location = c(Lat, Lng), # lat/lng coordinates
  size = c(600, 400), # w x h
  key = key
)
}

jpeg(paste0(data$Lat, "-", data$Lon, ".jpeg"))
purrr::map2(data$Lat, data$Lon, MyFunction)
dev.off()

但是,运行此代码只会将最后一张图像保存到我的硬盘驱动器中,以“Lat-Lon.jpeg”格式命名。如何修改代码,以便所有图像也保存相应的坐标?

【问题讨论】:

    标签: r loops


    【解决方案1】:

    我们可以在 map2 中使用 lambda 函数

    library(purrr)
    map2(data$Lat, data$Lon, ~ {
            jpeg(paste0(.x, "-", .y, ".jpeg"))
            MyFunction(.x, .y)
            dev.off()
           })
    

    或者另一个选项是pmap

    pmap(data, ~ {
                jpeg(paste0(..1, "-", ..2, ".jpeg"))
                MyFunction(..1, ..2)
                dev.off()
          })
    

    或使用base R

    Map(function(x, y) {
             jpeg(paste0(x, "-", y, ".jpeg"))
             MyFunction(x, y)
            dev.off()},
                     data$Lat, data$Lon)
    

    【讨论】:

      【解决方案2】:

      尝试将 jpeg 和 dev.off 放入函数中。

      【讨论】:

        猜你喜欢
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        • 2022-07-13
        相关资源
        最近更新 更多