terra::as.data.frame 处理多层时的命名

问题描述 投票:0回答:1

当使用as.data.frame处理多个图层时,对于合并图层,所有命名都是

lyr.1
。有没有更好的方法来解决这个命名问题?

library(terra)

m <- matrix(1:25, nrow=5, ncol=5)
rm <- rast(m)
n <- matrix(rep(5,time=25),nrow = 5,ncol = 5)
rn <- rast(n)

dt <- c(rm,rn)
data <- terra::as.data.frame(dt,xy=TRUE)
head(data)
> head(data)
    x   y lyr.1 lyr.1
1 0.5 4.5     1     5
2 1.5 4.5     6     5
3 2.5 4.5    11     5
4 3.5 4.5    16     5
5 4.5 4.5    21     5
6 0.5 3.5     2     5

是否可以将原始名称带入图层中(在示例中:

rm
rn
)?

dplyr terra
1个回答
0
投票

您可以使用

names<-

设置图层名称

您的数据

library(terra)
rm <- matrix(1:25, nrow=5, ncol=5) |> rast()
rn <- matrix(rep(5,time=25),nrow = 5,ncol = 5) |> rast()
dt <- c(rm, rn)

设置名称

names(dt) <- c("A", "B")
terra::as.data.frame(dt,xy=TRUE) |> head(2)
#    x   y A B
#1 0.5 4.5 1 5
#2 1.5 4.5 6 5

你也可以这样做

dt <- terra::rast(c(A=rm, B=rn))
terra::as.data.frame(dt,xy=TRUE) |> head(2)
#    x   y A B
#1 0.5 4.5 1 5
#2 1.5 4.5 6 5
© www.soinside.com 2019 - 2024. All rights reserved.