我构建了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不允许这样做。
感谢您的时间。
答案 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