optim()を使用して、データフレームのリストに関数を適用します

758321

最適化関数を使用して、多くのデータフレームのリストを実行する方法を見つけようとしています。以下に示すコードで示すように、現在、データフレームごとに移動して、正しく機能させる必要があります。lapplyまたはforループを使用してこのプロセスを自動化する方法について何か助けはありますか?ありがとう。

# required library
library(dplyr)

A <- "Cheetah 1"
B <- 2018
C <- c(0, 9.14, 18.29, 36.58)
D <- c(.2, 1.71, 2.71, 4.52)

Measured <- as.data.frame(cbind(A, B, C, D))
colnames(Measured) <- c('Animal', 'Year', 'Length', 'Height') 

H <- "Cheetah 2"
I <- 2018
J <- c(0, 9.14, 18.29, 36.58)
K <- c(.2, 1.78, 2.81, 4.61)

Measured2 <- as.data.frame(cbind(H, I, J, K))
colnames(Measured2) <- c('Animal', 'Year', 'Length', 'Height') 

Measured3 <- rbind(Measured, Measured2)
Measured3 <- split(Measured3, Measured3$Animal)

Measured3 <- lapply(Measured3, function(x){
x %>% 
   mutate(Length = as.numeric(as.character(Length)),
       Height = as.numeric(as.character(Height)))
 })

#initialize values
Var1 = 15
Var2 = 5

x0 = c(Var1,Var2)


#define function to optimise: optim will minimize the output
f <- function(x, a, b) {


y=0
#variables will be optimise to find the minimum value of f

V_1 = x[1]
V_2 = x[2]

 Predicted_X <- V_1 * (a - V_2 + V_2*exp(-a/V_2))

  y = sum((Predicted_X - b)^2)

    return(y)

 }

Y <- optim(x0, f, a = Measured3$`Cheetah 1`$Height,  b =  Measured3$`Cheetah 1`$Length)
tstudio

次のforループを使用して、簡単に修正できます。

nr_cheetahs <- length(Measured3)
optim_results <- vector("list", nr_cheetahs) 
for (i in seq(1, nr_cheetahs)){
 optim_results[[i]] <- optim(par=x0, fn=f, a=Measured3[[i]]['Height'], b=Measured3[[i]]['Length'])
}

# optim_results[[1]] provides the same result as your Y

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

データフレームのリストを使用して列名に関数を適用します

分類Dev

データフレームのリストの列に関数を適用し、結果を追加します

分類Dev

データフレームのリストに関数を適用し、結果を書き戻します

分類Dev

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

分類Dev

ベクトル出力を持つ関数をデータフレームのリストに適用します

分類Dev

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

分類Dev

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

分類Dev

データフレームのリスト内の対応する要素に関数を適用します

分類Dev

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

分類Dev

リスト内のデータフレームの列にいくつかの関数を適用します

分類Dev

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

分類Dev

リスト内の各データフレームの各要素に関数を適用します

分類Dev

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

分類Dev

データフレームの列に関数を適用します(列はリストです)

分類Dev

データフレームの列に関数を適用します(列はリストです)

分類Dev

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

分類Dev

pandasデータフレームに関数を適用して、他の列/セルに応じて列/セルのリストをスキャンします

分類Dev

リスト内のすべてのデータフレームの特定の列に関数を適用してから、列に値を割り当てます

分類Dev

Pythonの適用関数を使用して列をデータフレームに追加しますか?

分類Dev

Rのif / elseステートメントを使用してデータフレームに関数を適用します

分類Dev

データフレームの各行に関数を適用して、名前付きの値でリストを作成します

分類Dev

一致関数を適用して、名前付きデータフレームのリストに列を追加します

分類Dev

ループから関数を計算して、データフレームのリストに適用します

分類Dev

データフレームの各サブセットにカスタム関数を適用し、データフレームを作成します

分類Dev

ループ関数を使用して、データフレームをデータフレームのリストにフィルタリングします

分類Dev

ファミリ関数の適用を使用して、他の複数の列を操作して複数のデータフレーム列を作成します

分類Dev

パンダを使用してリストからのデータフレームにフィルターのリストを適用します

分類Dev

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

分類Dev

行列のリストに複数の関数を適用し、データフレームに回答を出力します

Related 関連記事

  1. 1

    データフレームのリストを使用して列名に関数を適用します

  2. 2

    データフレームのリストの列に関数を適用し、結果を追加します

  3. 3

    データフレームのリストに関数を適用し、結果を書き戻します

  4. 4

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

  5. 5

    ベクトル出力を持つ関数をデータフレームのリストに適用します

  6. 6

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

  7. 7

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

  8. 8

    データフレームのリスト内の対応する要素に関数を適用します

  9. 9

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

  10. 10

    リスト内のデータフレームの列にいくつかの関数を適用します

  11. 11

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

  12. 12

    リスト内の各データフレームの各要素に関数を適用します

  13. 13

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

  14. 14

    データフレームの列に関数を適用します(列はリストです)

  15. 15

    データフレームの列に関数を適用します(列はリストです)

  16. 16

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

  17. 17

    pandasデータフレームに関数を適用して、他の列/セルに応じて列/セルのリストをスキャンします

  18. 18

    リスト内のすべてのデータフレームの特定の列に関数を適用してから、列に値を割り当てます

  19. 19

    Pythonの適用関数を使用して列をデータフレームに追加しますか?

  20. 20

    Rのif / elseステートメントを使用してデータフレームに関数を適用します

  21. 21

    データフレームの各行に関数を適用して、名前付きの値でリストを作成します

  22. 22

    一致関数を適用して、名前付きデータフレームのリストに列を追加します

  23. 23

    ループから関数を計算して、データフレームのリストに適用します

  24. 24

    データフレームの各サブセットにカスタム関数を適用し、データフレームを作成します

  25. 25

    ループ関数を使用して、データフレームをデータフレームのリストにフィルタリングします

  26. 26

    ファミリ関数の適用を使用して、他の複数の列を操作して複数のデータフレーム列を作成します

  27. 27

    パンダを使用してリストからのデータフレームにフィルターのリストを適用します

  28. 28

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

  29. 29

    行列のリストに複数の関数を適用し、データフレームに回答を出力します

ホットタグ

アーカイブ