2012-10-03 3 views
0

사용자가 dim (1, ...., n)을 설정 한 다음 하나 이상의 x_i 변수 값을 i = 1, ..., n으로 설정한다고 가정합니다.매크로 변수를 사용하여 벡터 요소를 반복합니다.

더 많은 계산이 끝나면 dim 차원 벡터 vec을 (0, 0, 0.2, 0, 0, ..., 0.3) 형태로 자동으로 반환해야합니다.이 특정 경우에는 사용자가 : 물론

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

가 할 즉각적 :

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

을 그러나, 나는 가능한 한 많은 작업을 자동화 해주는 원하기 때문에, 나는 당신과 함께 x_i로부터 변수를 연결 할 방법을 물어 " 각각의 "요소는입니다. 0, 선험적으로 어떤 변수가 0과 다르게 설정되는지는 알지 못합니다.

다른 언어에서는 for-loop를 사용하여 매크로 변수를 사용할 수 있습니다 ... 구문이 잘못되었습니다. 이 아이디어는 다음과 같습니다.

vec <- rep(0, dim) 

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

무엇을 권하고 싶습니까? 감사!

+1

처음에는'x_i'를 만들지 말 것을 제안합니다. R은 매크로 기반 언어가 아닙니다. 당신이 Stata에서 오는 것처럼 보입니다. 너는 나의 동정심을 가지고있다. –

답변

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 
+0

대단히 감사합니다 !! – Stezzo

관련 문제