【问题标题】:Looping through vector elements using macro variables使用宏变量循环遍历向量元素
【发布时间】:2012-10-03 14:21:07
【问题描述】:

假设用户设置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
 } 
} 

你有什么建议?谢谢!

【问题讨论】:

  • 我建议你首先不要创建x_i。 R 不是基于宏的语言。看来您来自Stata。你有我的同情。

标签: r for-loop macros


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 2015-07-24
    • 2012-01-22
    • 2012-09-12
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多