[解決済み] プロミスはすでに評価中:再帰的なデフォルトの引数参照、または以前の問題?
2022-04-22 11:01:13
質問
以下は私のRコードです。関数は次のように定義されています。
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x ^ 2) + 0.001 * x ^ 3 + 0.2 * x + 80
}
g <- function(x, T, f=f) {
exp(-f(x) / T)
}
test <- function(g=g, T=1) {
g(1, T)
}
実行中のエラーは
> test()
test()でエラーが発生しました。
約束はすでに評価中:再帰的なデフォルトの引数の参照、または以前の問題?
の定義に置き換えると
f
の中に
g
であれば、エラーは解消されます。
このエラーは何なのでしょうか?の定義を置き換えない場合、どのように修正すればよいのでしょうか?
f
の中に
g
? ありがとうございます。
更新しました。
ありがとうございました。質問が2つあります。
(1) もし関数
test
の引数を取り、さらに
f
のようなものを追加するのでしょうか?
test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
? より多くの再帰がある場合、より多くの
.
?
(2) もし
f
は関数以外の引数で、例えば
g <- function(x, T, f=f){ exp(-f*x/T) }
と
test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
このような場合、形式的な引数と実際の非機能的な引数の両方に同じ名前を使用することは、安全で良い方法でしょうか、それとも何か問題を引き起こす可能性がありますか?
どのように解決するのですか?
形式の正式な引数
x=x
が原因となります。 これが発生する2つのインスタンスを削除すると、次のようになります。
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x^2) + 0.001 * x^3 + 0.2 * x + 80
}
g <- function(x, T, f. = f) { ## 1. note f.
exp(-f.(x)/T)
}
test<- function(g. = g, T = 1) { ## 2. note g.
g.(1,T)
}
test()
## [1] 8.560335e-37
関連
-
RStudio の "plot.new() : figure margins too large" 問題を解決する。
-
[解決済み] 文字列ベクトルを代入して、列名を持つ空のデータフレームを作成する?重複
-
[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み] ggplot2 の棒グラフで棒を並べる
-
[解決済み] セッションが作成されません。このバージョンのChromeDriverはChromeバージョンにしか対応していません ChromeDriver ChromeでSeleniumを使用した場合の74エラー
-
[解決済み] 2つの単語の最初の文字を大文字にします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン