R:为赋值构造变量名

时间:2017-03-03 09:16:53

标签: r

我构建了3个全局向量:

assign("sec1",  rep(NA_real_, 800), envir = .GlobalEnv)
assign("sec2",  rep(NA_real_, 800), envir = .GlobalEnv)
assign("sec3",  rep(NA_real_, 800), envir = .GlobalEnv)

在函数F中,我试图填充它们:

v <- parse.message()
n <- lookup.security()
m <- lookup.time.bucket()

assign(paste0("sec", n , "[", m, "]"), v, envir = .GlobalEnv)  # line 220

上面没有填充sec1,sec2和sec3向量。相反,它正在创建新的全局变量sec1 [314],sec2 [400]等。

无论如何,我的代码第220行都要做我想做的事情吗?

我无法更改函数F的参数列表,因为有问题的API不允许这样做。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

eval(parse(text =将满足您的需求,但使用文本进行数据操作/分配通常不是一个好主意。通常有一种更好的方法。

说完了:

n <- 1
m <- 314
v <- 5
sec1 <- rep(NA, 800)
eval(parse(text = paste0("sec", n , "[", m, "]" , '<-', v)))

输出:

> summary(sec1)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
      5       5       5       5       5       5     799