将提取列表转成csv文件
Turn extraction list to csv file
我已经将光栅文件和折线形状文件上传到 R 中,并使用 extract
函数从折线沿线的每个像素中提取数据。如何将 extract
输出的列表转换为 CSV 文件?
如果我明白你在问什么,我想你可以使用 unlist() 来解决你的问题。
d <- c(1:10) # creates a sample data frame to use
d <- as.list(d) # converts the data frame into a list
d <- unlist(d) # converts the list into a vector
这是一个简单的 self-contained 可重现的例子(这个例子来自 ?raster::extract
)
library(raster)
r <- raster(ncol=36, nrow=18, vals=1:(18*36))
cds1 <- rbind(c(-50,0), c(0,60), c(40,5), c(15,-45), c(-10,-25))
cds2 <- rbind(c(80,20), c(140,60), c(160,0), c(140,-55))
lines <- spLines(cds1, cds2)
e <- extract(r, lines)
e
是一个列表
> e
[[1]]
[1] 126 127 161 162 163 164 196 197 200 201 231 232 237 266 267 273 274 302 310 311 338 346 381 382 414 417 450 451 452 453 487 488
[[2]]
[1] 139 140 141 174 175 177 208 209 210 213 243 244 249 250 279 286 322 358 359 394 429 430 465 501 537
并且您不能直接将其写入 csv,因为列表元素(向量)的长度不同。
所以先让它们都一样长
x <- max(sapply(e, length))
ee <- sapply(e, `length<-`, x)
让我们看看
head(ee)
# [,1] [,2]
#[1,] 126 139
#[2,] 127 140
#[3,] 161 141
#[4,] 162 174
#[5,] 163 175
#[6,] 164 177
tail(ee)
# [,1] [,2]
#[27,] 450 NA
#[28,] 451 NA
#[29,] 452 NA
#[30,] 453 NA
#[31,] 487 NA
#[32,] 488 NA
现在您可以写入 csv 文件
write.csv(ee, "test.csv", row.names=FALSE)
我已经将光栅文件和折线形状文件上传到 R 中,并使用 extract
函数从折线沿线的每个像素中提取数据。如何将 extract
输出的列表转换为 CSV 文件?
如果我明白你在问什么,我想你可以使用 unlist() 来解决你的问题。
d <- c(1:10) # creates a sample data frame to use
d <- as.list(d) # converts the data frame into a list
d <- unlist(d) # converts the list into a vector
这是一个简单的 self-contained 可重现的例子(这个例子来自 ?raster::extract
)
library(raster)
r <- raster(ncol=36, nrow=18, vals=1:(18*36))
cds1 <- rbind(c(-50,0), c(0,60), c(40,5), c(15,-45), c(-10,-25))
cds2 <- rbind(c(80,20), c(140,60), c(160,0), c(140,-55))
lines <- spLines(cds1, cds2)
e <- extract(r, lines)
e
是一个列表
> e
[[1]]
[1] 126 127 161 162 163 164 196 197 200 201 231 232 237 266 267 273 274 302 310 311 338 346 381 382 414 417 450 451 452 453 487 488
[[2]]
[1] 139 140 141 174 175 177 208 209 210 213 243 244 249 250 279 286 322 358 359 394 429 430 465 501 537
并且您不能直接将其写入 csv,因为列表元素(向量)的长度不同。
所以先让它们都一样长
x <- max(sapply(e, length))
ee <- sapply(e, `length<-`, x)
让我们看看
head(ee)
# [,1] [,2]
#[1,] 126 139
#[2,] 127 140
#[3,] 161 141
#[4,] 162 174
#[5,] 163 175
#[6,] 164 177
tail(ee)
# [,1] [,2]
#[27,] 450 NA
#[28,] 451 NA
#[29,] 452 NA
#[30,] 453 NA
#[31,] 487 NA
#[32,] 488 NA
现在您可以写入 csv 文件
write.csv(ee, "test.csv", row.names=FALSE)