[解決済み] 複数の値を返す関数から代入する方法は?
2022-02-19 22:01:20
質問
Rのロジックをまだ理解しようとしています。複数の値を返す関数から結果を(LHSで)アンパックする最善の方法は何でしょうか?
どうやらできないようです。
R> functionReturningTwoValues <- function() { return(c(1, 2)) }
R> functionReturningTwoValues()
[1] 1 2
R> a, b <- functionReturningTwoValues()
Error: unexpected ',' in "a,"
R> c(a, b) <- functionReturningTwoValues()
Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found
を本当にしなければならないのでしょうか?
R> r <- functionReturningTwoValues()
R> a <- r[1]; b <- r[2]
とか、Rプログラマはもっとこう書くのだろうか。
R> functionReturningTwoValues <- function() {return(list(first=1, second=2))}
R> r <- functionReturningTwoValues()
R> r$first
[1] 1
R> r$second
[1] 2
--- シェーンの質問に答えるために編集されました ---。
結果値の部分に名前をつける必要はないんです。 私は、1つの集約関数を最初のコンポーネントに、もう1つの集約関数を2番目のコンポーネントに適用しています (
min
と
max
もし、両方のコンポーネントに同じ機能があれば、分割する必要はありません)。
どのように解決するのですか?
(1) リスト[...]<-。
10年以上前に投稿したことがある
r-help
. それ以来、gsubfn パッケージに追加されました。これは特別な演算子を必要としませんが、左辺を
list[...]
このように
library(gsubfn) # need 0.7-0 or later
list[a, b] <- functionReturningTwoValues()
もし、1つ目か2つ目のコンポーネントだけが必要なら、これらもすべて機能します。
list[a] <- functionReturningTwoValues()
list[a, ] <- functionReturningTwoValues()
list[, b] <- functionReturningTwoValues()
(もちろん、1つの値しか必要ないのであれば
functionReturningTwoValues()[[1]]
または
functionReturningTwoValues()[[2]]
で十分です)。
より多くの例については、引用したr-helpのスレッドを参照してください。
(2)で
もし、単に複数の値を組み合わせて、その後に返す値に名前を付けるだけなら、単純な代替案として
with
:
myfun <- function() list(a = 1, b = 2)
list[a, b] <- myfun()
a + b
# same
with(myfun(), a + b)
(3)添付ファイル もう一つの選択肢はattachです。
attach(myfun())
a + b
追加されました。
with
と
attach
関連
-
[解決済み】xtsオブジェクトでエラー: "antempt to set 'colnames' on the object with less than two dimension "を克服する方法
-
[解決済み】 'height' はベクトルか行列でなければならない barplot のエラー
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み】RでKNN。trainとclassは長さが違う」?
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】 lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) のエラー : 'y' の NA/NaN/Inf, あらゆる方法を試したが解決しなかった。
-
[解決済み】R: predict() の数値 'envir' 引数が長さ1でない。)
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み] Bash関数から文字列値を返す方法
-
[解決済み】VBAの関数から結果を返す方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み】「arguments imply differing number of rows: x, y」というエラーは何を意味するのか?
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】scale_color_manual()が動作しない件
-
[解決済み】Rで立方根と対数変換をする
-
[解決済み] テスト
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み】seq_alongはうまくいくが、seqが意図しない結果を生む例とは?
-
[解決済み] R関数で複数のオブジェクトを返す【重複】について