2

Rでマクロを使用できますか?

この質問に似た別の質問を見ましたが、よく理解できませんでした。

それぞれが異なる名前と内容を持つスカラーを作成したいとしましょう。基本的に、R で実行したいことは、次のダミーの例で説明できます。

local i=1
forvalues i=1/5 {
    scalar scalar_`i'=`i'+1
}

Stata では、iさまざまな値を取るas scalar1scalar2scalar3などが生成されます。i=1/5ループの実行中にリスト全体を入力する必要はありませんでした (単に)。

これはRで行うことができますか?

4

3 に答える 3

9

@geektraderの回答に示されているように、Rでそれを行うことができます。しかし、(おそらく) そうしたくないでしょう。名前の文字列操作によって変数を処理することは、多くの理由から悪い考えです。代わりに、これを行いたい:

scalar<-2:6

これにより、値が 2 から 6 の という配列が作成されscalar、次のようにアクセスできます。

> scalar[1]
[1] 2
> scalar[2]
[1] 3
> scalar[3:5]
[1] 4 5 6
于 2013-10-22T01:39:25.120 に答える
5

Rはプログラミング言語です。したがって、他の統計パッケージで「マクロ」が行うことよりもはるかに多くのことができます。

あなたの質問に関しては、assign関数を使用できます

for ( i in 1:5) { assign(paste0('scalar_', i), i+1) }
于 2013-10-22T01:22:04.570 に答える
5

この質問は、プログラミング スタイルの悪さについて論争や不必要な主張をせずに答えられることを願っています。文字列の処理は自然であり、多くの言語の中心です。

Stata においても、あなたが望むものはベクトルとしてよく考えられており、自然にそのように扱われます。この名前scalarは、スカラーには適切な名前ではありません。

R と Stata は、Unix と Unix ベースの言語にいくつかの共通のルーツを持つ異なる言語ですが、別々に進化してきました。多くの場合、一方の言語で慣用的で自然なものは、他方の言語では慣用的で自然ではありません。最初の概算として、経験豊富なユーザーのスタイルに従うのが最善です。

于 2013-10-22T07:44:31.080 に答える