Turn extraction list to csv file

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-13 09:10:57

问题


I have uploaded a raster file and polyline shapefile into R and use the extract function to to extract the data from every pixel along the polyline. How do I turn the list output by extract into a CSV file?


回答1:


If I understand what it is you're asking, I think you could resolve your situation by using 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



回答2:


Always include a simple self-contained reproducible example (this one is taken from ?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 is a list

> 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

and you cannot directly write this to a csv because the list elements (vectors) have different lengths.

So first make them all the same length

x <- max(sapply(e, length))
ee <- sapply(e, `length<-`, x)

Let's see

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

And now you can write to a csv file

write.csv(ee, "test.csv", row.names=FALSE)


来源:https://stackoverflow.com/questions/56403276/turn-extraction-list-to-csv-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!