使用宏变量循环通过向量元素

时间:2012-10-03 14:21:07

标签: r for-loop macros

假设用户设置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变量与&#34;各自的&#34; vec的元素,考虑到先验不知道将设置哪个/多少个变量与0不同。

在其他语言中,这可以使用带有宏变量的for循环来完成......语法错误,但想法是这样的:

vec <- rep(0, dim)

for (i in 1:dim) {
  if (as.integer(exists(x_i))==1) {
    vec[i] <- x_i
 } 
} 
你会建议什么?谢谢!

1 个答案:

答案 0 :(得分: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