1

のリストがあるとしましょう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 x 3 レイヤーに変換したいと考えていrasterます。その後、レイヤーがリストに表示されます。

でこれを実行しようとしましlapplyたが、何が問題なのか本当にわかりません:

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

2 に答える 2

1

おそらく、最初にデータフレームをマトリックスに変換する必要があります。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)

ラスターが行方向または列方向に構築されていることを確認したい場合があります -これを調整するにはbyrowarg を使用するmatrixか、行列を転置するか、別の方法で配置します。

于 2013-08-21T16:02:11.227 に答える
0

あなたの問題はnrows=3rasterオブジェクトに変換しようとしていて、その新しいオブジェクトを の各要素で動作する関数として適用しようとしていることですa.list

次のいずれかが必要です。

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

または:

lapply(a.list, function(X) raster(X, nrows=3, ncols=3))
于 2013-08-21T15:19:34.670 に答える