假设用户设置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
}
}
你会建议什么?谢谢!
答案 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