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
 } 
} 

你有什么建议?谢谢!

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 回答