2012-10-03 44 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變量連同你會如何鏈接「相應「元素vec,考慮到事先不知道哪個/多少個變量將設置爲與0不同。

在其他語言中,可以使用帶有宏變量的for循環來完成......語法錯誤,但這個想法是這樣的:

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