2013-08-21 2 views
1

Скажем, у меня есть список data.frames:R: Преобразование списка data.frames в список растровых

a1<-as.data.frame(1:9) 
a2<-as.data.frame(2:10) 
a3<-as.data.frame(3:11) 

a.list<-list(a1,a2,a3) 

Теперь я хочу, чтобы преобразовать каждый data.frame из списка в 3 на 3 raster толщиной слоя , После этого слои должны быть в списке.

я пытался выполнить это с lapply, но не могу сказать, в чем проблема:

r.list<-lapply(a.list, raster(nrows=3, ncols=3)) 

ответ

1

Вы, вероятно, нужно преобразовать dataframes матрицам первой. Подвиг тот факт, что у вас есть кадры данных 1-столбцов, чтобы преобразовать их в векторы, а затем использовать matrix функцию:

> rl = lapply(a.list, function(X) raster(matrix(X[,1],nrow=3))) 
> rl[[1]] 
class  : RasterLayer 
dimensions : 3, 3, 9 (nrow, ncol, ncell) 
resolution : 0.3333333, 0.3333333 (x, y) 
extent  : 0, 1, 0, 1 (xmin, xmax, ymin, ymax) 
coord. ref. : NA 
data source : in memory 
names  : layer 
values  : 1, 9 (min, max) 

Вы можете захотеть, чтобы убедиться, что растр Строятся строкам или столбцам - использование byrow arg matrix, чтобы скорректировать это, или транспонировать матрицу или иным образом ее организовать.

+0

Это работает для 3-х '' растровых'. Поскольку я хотел бы использовать его для разных измерений, я изменил ваше решение для более общего случая: 'rl = rl = lapply (a.list, function (X) matrix (X, nrow = 3, ncol = 3)) 'и затем:' rl = lapply (rl, function (X) растр (X)) ' –

0

Ваша проблема заключается в том, что вы пытаетесь преобразовать nrows=3 в raster объект, а затем применить его новый объект как функция, работающая на каждом элементе a.list.

Вы хотите либо:

lapply(a.list, raster, nrows=3, ncols=3) 

Или:

lapply(a.list, function(X) raster(X, nrows=3, ncols=3)) 
+0

Вы действительно попробовали этот код? Потому что это не работает для меня. 'unused argument (s) (nrows = 3, ncols = 3)' – Spacedman

+0

Тогда проблема находится в 'растр', а не только при использовании OP' lapply' –

+0

Нет, проблема заключается в 'lapply', вызывающем' растр', с list в качестве аргумента, а 'растр' не преобразует это в растровый x ncols, который документирован. – Spacedman

Смежные вопросы