-1

ユーザー入力を取得するスクリプトを設定しました。入力の1つを使用して、さまざまな変数を初期化するために使用します。

X <- 'a' # a is what the user would input from command line

Xの内容を変数名の範囲に追加したい。最終的な名前を次のようにしたい:

XXX_a_1 <- #something; XXX_a_2 <- #something; XXX_a_3 <- #something; XXX_a_4 <- #something; XXX_a_5 <- #something; XXX_a_6 <- #something;

これを行う方法はありますか?

4

3 に答える 3

3

R はベクターとリストを処理するように最適化されているため、一般に、多くの変数を作成していることに気付いた場合は、ベクター/リストを使用する方が適切かどうかを自問する必要があります。

たとえば、次のことができます。

user.input <- "test"
vars <- paste(user.input, 1:5, sep="_")

my.list <- list()

for (v in vars)
  my.list[[v]] = sample(1:10, 1)

これにより、次のことが得られます。

> my.list
$test_1
[1] 3

$test_2
[1] 5

$test_3
[1] 3

$test_4
[1] 5

$test_5
[1] 5
于 2013-07-12T16:51:00.877 に答える
2

分離された変数で何をしたいのか明確ではありません。リストまたは環境で作業することをお勧めします。たとえば、次のような名前付きリストを作成できます。

X <- 'a'
L <- vector("list", 5)
names(L) <- paste('XXX',X,1:5,sep='_')

もちろん、次を使用してリストを個別の変数に変換できますlist2env

list2env(L,.GlobalEnv)
ls(pattern='XXX')
[1] "XXX_a_1" "XXX_a_2" "XXX_a_3" "XXX_a_4" "XXX_a_5" 
于 2013-07-12T16:50:24.737 に答える
2

おそらく、paste (または paste0) を使用して変数名を作成し、次に assign を使用してその名前の変数に値を指定します。

X <- "a"
assign(paste0("XXX_",X,"_1"), "value1")
print(XXX_a_1)

さらに情報を提供していただければ、これらの値を割り当てるループについてお手伝いできます。

于 2013-07-12T16:50:33.373 に答える