-1

動的に名前が付けられた変数の 2 番目の列を選択するにはどうすればよいですか?

「population.USA」、「population.Mexico」、「population.Canada」という形式の変数を作成します。各変数には、年の列と人口値の列があります。ループ中にこれらの変数のそれぞれから 2 番目の列を選択したいと思います。

私はこの構文を使用します:

sprintf("population.%s", country)[, 2]

R は次のエラーを返します。Error in sprintf("population.%s", country)[, 2] : incorrect number of dimensions

4

2 に答える 2

11

ここ数分間の一連の質問に基づいて、R に慣れるための 2 つの一般的な推奨事項があります。

  1. 使用しないでくださいsprintf
  2. 使用しないでくださいassign

さて、明らかに、これらの関数は両方とも役立つ場合があります。しかし、R のデータ構造に関するいくつかの基本的なことを習得する前に、それらについて学ぶのは早すぎます。それらの松葉杖は問題を引き起こしているだけなので、松葉杖なしでコードを書くようにしてください (当分の間!)。

国の人口ごとに個別の変数を作成するのではなく、それらをリストに配置します。

population <- vector("list",3)
names(population) <- c('USA','Mexico','Russia')

次に、各国の名前の文字列表現を使用してそれぞれにアクセスできます。

population[['USA']] <- 10000

または、

region <- 'USA'
population[[region]]

この例では、リスト要素に 1 つの値を割り当てました。リストは、マトリックスやデータ フレームを含む他のデータ型を保持します。andを使用するよりもタイピングがはるかに少なくなり、安全性と効率性も大幅に向上します。sprintfassign

于 2012-08-04T21:46:50.860 に答える