2017-03-03 59 views
0

構建變量的名字我已經建造3個全球向量:R:用於分配

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 

上面沒有填充秒-1, sec2和sec3向量。相反,它正在創建新的全局變量sec1 [314],sec2 [400]等。

有沒有辦法在我的代碼中執行220行的操作?

我不能更改函數F的參數列表,因爲有問題的API不允許這樣做。

謝謝你的時間。

回答

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 
+0

謝謝LyzandeR – newbie78634