[解決済み] Rのグローバル変数とローカル変数
2022-05-10 10:37:36
質問
私はRの初心者ですが、Rのローカル変数とグローバル変数の使い方がよくわかりません。
私はインターネット上のいくつかの記事を読みました。
=
または
<-
現在の環境での変数を代入し、その上で
<<-
関数の内部でグローバル変数にアクセスすることができるんだ。
しかし、C++で覚えているように、ローカル変数は、あなたがブラケット
{}
の中で変数を宣言すると発生するように記憶しています。それとも
関数
のみなのか、それともRではローカル変数の概念があるのか。
ちょっと実験してみたところ、括弧だけでは不十分なような気がするのですが、何か間違っているのでしょうか?
{
x=matrix(1:10,2,5)
}
print(x[2,2])
[1] 4
どのように解決するのですか?
関数内で宣言された変数は、その関数のローカル変数になります。例えば
foo <- function() {
bar <- 1
}
foo()
bar
は以下のようなエラーを出します。
Error: object 'bar' not found
.
を作りたい場合は
bar
をグローバル変数にしたい場合は、そうする必要があります。
foo <- function() {
bar <<- 1
}
foo()
bar
この場合
bar
は関数の外からアクセス可能です。
しかし、CやC++、あるいは他の多くの言語とは異なり、ブラケットは変数のスコープを決定しません。例えば、次のようなコード・スニペットでは。
if (x > 10) {
y <- 0
}
else {
y <- 1
}
y
が表示された後もアクセス可能です。
if-else
ステートメントの後でもアクセス可能です。
おっしゃるとおり、ネストされた環境を作ることもできます。以下の2つのリンクで、その使用方法を理解することができます。
- http://stat.ethz.ch/R-manual/R-devel/library/base/html/environment.html
- http://stat.ethz.ch/R-manual/R-devel/library/base/html/get.html
ここに小さな例があります。
test.env <- new.env()
assign('var', 100, envir=test.env)
# or simply
test.env$var <- 100
get('var') # var cannot be found since it is not defined in this environment
get('var', envir=test.env) # now it can be found
関連
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み] リストをデータフレームに変換する
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み] FUN内のlapplyインデックス名へのアクセス
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] Rで複数行のコメントを持つことは可能ですか?[重複している]。
-
[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み】エラー:Rで関数が見つかりませんでした。
-
[解決済み] データフレームのカラムのデータ型を決定する