0
我在構建一個R
函數,要求expression
的大小根據另一個變量的大小而變化。構建可變長度表達式(宏中的R?)
表達元件的序列如下:
1/ 1
2/ "Xts_filled[(locNAs[n] - 1),]"
3/ "Xts_filled[(locNAs[n] - 2),]"
4/ "Xts_filled[(locNAs[n] - 3),]"
...
表達式具有規則圖案,只有減去變更後的號碼作爲被加到每個元素:它似乎完美候選某種macro
。
這可能性在R
?
我使用for
循環和eval(parse(text = ___))
成語如下黑客攻擊:
buildExpr <- function(ARorder){
callList <- list("1", "Xts_filled[(locNAs[n] - 1),]")
if(ARorder - 1) {
for(j in 2:ARorder) {
callList <- c(callList, paste0("Xts_filled[(locNAs[n] -", j, "),]"))
}
}
callExpr <- paste0("c(", paste(callList, collapse = ","), ")")
}
我把通過eval(parse(text = buildExpr(3)))
工作。
有沒有更好的方法?
爲什麼與'EVAL打擾(parse'?爲什麼不直接調用呢? –
@RicardoSaporta我所需要的對象,以評價類似'c(1,0.5,0.25)'。這樣做讓它工作 - 儘管我不確定這是否是最好的方法。 – ricardo
請參閱下面的Hong Ooi的答案;) –