R-同じスクリプトを複数のデータフレームに適用する

B.まあ

以下のように、座標、降雨量、作付面積のデータを含む.datファイルを読み取るスクリプトがあります。

  East  North    rain  Wheat Sbarley Potato OSR fMaize Total  LCA
10000 510000 1498.73 0.0021     0.5 0.0022   0 0.0056  0.01 0.01
10000 510000 1498.73 0.0021   0.034 0.0022   0 0.0056  0.01 0.01
10000 510000 1498.73 0.0021   0.001 0.0022   0 0.0056  0.01 0.01
10000 515000 1518.51 0.0000    0.12 0.0000   0 0.0000  0.00 0.00
10000 515000 1518.51 0.0000  0.0078 0.0125   0 0.0000  0.00 0.00
10000 515000 1518.51 0.0000       0 0.0000   0   0.03  0.00 0.00 

以下のコードは、データを抽出してラスターファイルを作成し、それをggplotにプロットする前に、一連のモデルを通じて小麦の排出量を計算します。これらの関連するクエリ読んだ 後、パッケージを作成する必要があるのか​​、各クロップタイプでコードを繰り返す方法について非常に基本的なものが不足しているのかについて、かなり混乱しています。

library(doBy)
library(ggplot2)
library(plyr)
library(raster)
library(RColorBrewer)
library(rgdal)
library(scales)
library(sp)

### Read in the data
crmet <- read.csv("data.dat")
# Remove NA values
crm <- crmet[ ! crmet$rain %in% -119988, ]
crm <- crm[ ! crm$Wheat %in% -9999, ]

### Set model parameters
a <- 0.1474
b <- 0.0005232
g <- -0.00001518
d <- 0.000003662
N <- 182

### Models
crm$logN2O <- a+(b*crm$rain)+(g*N)+(d*crm$rain*N)
crm$eN2O <- exp(crm$logN2O)
crm$whN2O <- crm$eN2O*crm$Wheat

### Prepare data for conversion to raster
crmet.ras <- crm
crmet.ras <- rename(crmet.ras, c("East"="x","North"="y"))

#### Make wheat emissions raster
wn <- crmet.ras[,c(1,2,13)]
spg <- wn

# Set the Eastings and Northings to coordinates
coordinates(spg) <- ~ x + y
# coerce to SpatialPixelsDataFrame
gridded(spg) <- TRUE
# coerce to raster
rasterDF <- raster(spg)
# Add projection to it - in this case OSBG36
proj4string(rasterDF) <- CRS("+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs")
rasterDF

writeRaster(rasterDF, 'wn.tif', overwrite=T)

### Plotting the raster:
whplot <-ggplot(wn, aes(x = x, y = y))+
  geom_tile(aes(fill = whN2O))+
  theme_minimal()+
  theme(plot.title = element_text(size=20, face="bold"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        legend.title = element_text(size=16, face="bold"))+
  scale_fill_gradient(name=expression(paste("", N[2], "O ", Ha^-1, sep="")))+
  xlab ("")+
  ylab ("")+
  labs (title="Nitrous oxide emissions\nfrom Wheat")

whplot

私は上記の多くをできる限り関数に変えようとしていますが、それらはすべて、ここや?helpファイルにある例よりもかなり複雑です。助け/提案を事前に感謝します。

シトロンローズ

データファイル名を引数として取る関数にコードを配置する必要があります。次に、関連するデータファイル名を使用して関数を呼び出すことができます。何かのようなもの:

library(doBy)
library(ggplot2)
library(plyr)
library(raster)
library(RColorBrewer)
library(rgdal)
library(scales)
library(sp)

#defining the function
my.neat.function <- function(datafname){
### Read in the data
crmet <- read.csv(datafname)
# Remove NA values
crm <- crmet[ ! crmet$rain %in% -119988, ]
crm <- crm[ ! crm$Wheat %in% -9999, ]

### Set model parameters
a <- 0.1474
b <- 0.0005232
g <- -0.00001518
d <- 0.000003662
N <- 182
### Models
crm$logN2O <- a+(b*crm$rain)+(g*N)+(d*crm$rain*N)
crm$eN2O <- exp(crm$logN2O)
crm$whN2O <- crm$eN2O*crm$Wheat

### Prepare data for conversion to raster
crmet.ras <- crm
crmet.ras <- rename(crmet.ras, c("East"="x","North"="y"))

#### Make wheat emissions raster
wn <- crmet.ras[,c(1,2,13)]
spg <- wn

# Set the Eastings and Northings to coordinates
coordinates(spg) <- ~ x + y
# coerce to SpatialPixelsDataFrame
gridded(spg) <- TRUE
# coerce to raster
rasterDF <- raster(spg)
# Add projection to it - in this case OSBG36
proj4string(rasterDF) <- CRS("+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs")
rasterDF

writeRaster(rasterDF, 'wn.tif', overwrite=T)

### Plotting the raster:
whplot <-ggplot(wn, aes(x = x, y = y))+
  geom_tile(aes(fill = whN2O))+
  theme_minimal()+
  theme(plot.title = element_text(size=20, face="bold"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        legend.title = element_text(size=16, face="bold"))+
  scale_fill_gradient(name=expression(paste("", N[2], "O ", Ha^-1, sep="")))+
  xlab ("")+
  ylab ("")+
  labs (title="Nitrous oxide emissions\nfrom Wheat")

whplot
} #end of function definition
my.neat.function("data.dat") #first call to function
my.neat.function("otherdata.dat")#same thing with another dataset

異なるデータのモデルパラメーターの場合、パラメーター値のベクトルを引数として関数に追加する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Rの複数のデータフレームに同じ関数を適用する方法

分類Dev

Rで、同じデータフレーム内の複数の列に列の値を適用する方法

分類Dev

Rのデータフレームに複数の関数を適用する

分類Dev

R:データフレームのリストに関数を適用するときのエラー

分類Dev

Rのデータフレームの2つのリストに関数を適用する

分類Dev

R:データフレームの複数の列にまたがるリストを返す関数を適用する

分類Dev

rのデータフレームのネストされたリストに関数を適用します

分類Dev

RのデータフレームにSQLクエリを適用する

分類Dev

関数のリストをRの別のデータフレームの行に適用します

分類Dev

R:データフレーム内のすべてのエントリに関数を適用する

分類Dev

変数のリストを適用するためにsapplyを拡張し、出力をデータフレームのリストとしてRに保存する

分類Dev

Rのデータフレームのリストに関数を適用します

分類Dev

Rのデータフレームのリストに自己定義関数を適用します

分類Dev

複数の列を適用してRのデータフレームの要約リストを作成する方法

分類Dev

Rデータフレームに関数を適用する

分類Dev

Rのデータフレームのリストにカイ2乗検定を適用する

分類Dev

Rからデータフレームの複数のリストをエクスポートする方法

分類Dev

Rの複数のデータフレームに単純線形回帰を適用する

分類Dev

Rのデータフレームの各列に関数を適用する

分類Dev

r-リストの複数のリストをデータフレームに結合する方法

分類Dev

Rのデータフレームのリストに関数を適用するにはどうすればよいですか?

分類Dev

Rデータフレームの時系列に関数を適用する

分類Dev

rのデータフレームに関数を適用する方法

分類Dev

R:リスト内の各データフレームに同じ変数(行番号)を追加するにはどうすればよいですか?

分類Dev

Rのデータフレーム内の各グループに関数を適用する

分類Dev

rでdplyrを使用して、各グループのデータフレームに関数を適用する

分類Dev

R:複数のリストを1つのデータフレームにマージする

分類Dev

Rで同時にリストに格納されたデータフレームの複数の列の名前を変更する

分類Dev

dplyrを使用してRデータフレームの複数の列の関数を適用する

Related 関連記事

  1. 1

    Rの複数のデータフレームに同じ関数を適用する方法

  2. 2

    Rで、同じデータフレーム内の複数の列に列の値を適用する方法

  3. 3

    Rのデータフレームに複数の関数を適用する

  4. 4

    R:データフレームのリストに関数を適用するときのエラー

  5. 5

    Rのデータフレームの2つのリストに関数を適用する

  6. 6

    R:データフレームの複数の列にまたがるリストを返す関数を適用する

  7. 7

    rのデータフレームのネストされたリストに関数を適用します

  8. 8

    RのデータフレームにSQLクエリを適用する

  9. 9

    関数のリストをRの別のデータフレームの行に適用します

  10. 10

    R:データフレーム内のすべてのエントリに関数を適用する

  11. 11

    変数のリストを適用するためにsapplyを拡張し、出力をデータフレームのリストとしてRに保存する

  12. 12

    Rのデータフレームのリストに関数を適用します

  13. 13

    Rのデータフレームのリストに自己定義関数を適用します

  14. 14

    複数の列を適用してRのデータフレームの要約リストを作成する方法

  15. 15

    Rデータフレームに関数を適用する

  16. 16

    Rのデータフレームのリストにカイ2乗検定を適用する

  17. 17

    Rからデータフレームの複数のリストをエクスポートする方法

  18. 18

    Rの複数のデータフレームに単純線形回帰を適用する

  19. 19

    Rのデータフレームの各列に関数を適用する

  20. 20

    r-リストの複数のリストをデータフレームに結合する方法

  21. 21

    Rのデータフレームのリストに関数を適用するにはどうすればよいですか?

  22. 22

    Rデータフレームの時系列に関数を適用する

  23. 23

    rのデータフレームに関数を適用する方法

  24. 24

    R:リスト内の各データフレームに同じ変数(行番号)を追加するにはどうすればよいですか?

  25. 25

    Rのデータフレーム内の各グループに関数を適用する

  26. 26

    rでdplyrを使用して、各グループのデータフレームに関数を適用する

  27. 27

    R:複数のリストを1つのデータフレームにマージする

  28. 28

    Rで同時にリストに格納されたデータフレームの複数の列の名前を変更する

  29. 29

    dplyrを使用してRデータフレームの複数の列の関数を適用する

ホットタグ

アーカイブ