Превратить список извлечения в CSV-файл - PullRequest
0 голосов
/ 01 июня 2019

Я загрузил растровый файл и шейп-файл полилинии в R и использую функцию extract для извлечения данных из каждого пикселя вдоль полилинии.Как превратить вывод списка с помощью extract в файл CSV?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Всегда включайте простой автономный воспроизводимый пример (этот взят из ?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)
0 голосов
/ 01 июня 2019

Если я понимаю, о чем вы спрашиваете, я думаю, что вы могли бы разрешить свою ситуацию с помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...