2012-12-09 38 views
1

我想通過名字來傳遞變量到data.table X如下:按名稱傳遞變量分配到右手邊:=在data.table

myfunc <- function(varname){ 
    X[, newVar:= varname] 
} 
myfunc("oldVar") 

我應該如何去關於它?我試過quote()eval(),但它沒有奏效。

+4

你真的應該通過[data.table FAQ]以自己的方式(HTTP://datatable.r-forge 1,1'- project.org /數據表-faq.pdf)。這是FAQ 1.5 - 1.6。 –

+0

'varname'是'.GlobalEnv'中某個對象的名字嗎? – GSee

+0

你只是想重命名列? – mnel

回答

3

查找列作爲一個向量,並利用它來進行分配:

myfunc <- function(varname){ 
    X[, newVar := X[[varname]]] 
} 

X <- data.table(oldVar=1:4, b=5:8) 

> myfunc("oldVar") 
    oldVar b newVar 
1:  1 5  1 
2:  2 6  2 
3:  3 7  3 
4:  4 8  4 
+0

非常感謝,馬修。它像一個魅力:) – AdamNYC