0

ユーザーがdim(1, ...., n) を設定し、次に i = 1,..., n で 1 つ以上の x_i 変数値を設定するとします。

dimさらに計算を行った後、(0, 0, 0.2, 0, 0, ..., 0.3) の形式の次元ベクトルを自動的に返す必要がありますvec。この場合、ユーザーは次のように設定します。

dim <- 10
x_3 <- 0.2
x_10 <- 0.3

もちろん、すぐに実行できます。

vec <- rep(0, dim)
vec[3] <- x_3
vec[10] <- x_10

ただし、できるだけ多くの操作を自動化したいので、vecどの変数が設定されるか/いくつの変数が設定されるかがアプリオリにわからないことを考慮して、 x_i 変数を の「それぞれの」要素とどのようにリンクしますか? 0 とは異なります。

他の言語では、マクロ変数を使用した for ループを使用してこれを行うことができます...構文は間違っていますが、考え方は次のようなものです。

vec <- rep(0, dim)

for (i in 1:dim) {
  if (as.integer(exists(x_i))==1) {
    vec[i] <- x_i
 } 
} 

あなたは何を提案しますか?ありがとう!

4

1 に答える 1

3
sapply(paste("x_",seq(dim),sep=""),function(x) if(exists(x)) get(x) else 0)
 x_1  x_2  x_3  x_4  x_5  x_6  x_7  x_8  x_9 x_10 
 0.0  0.0  0.2  0.0  0.0  0.0  0.0  0.0  0.0  0.3
于 2012-10-03T14:29:52.903 に答える