0
我正在使用data.table,我想過濾一個函數中的data.table,我將該列的名稱作爲字符向量傳遞。引用通過data.table中的字符變量的列R
舉個簡單重複的例子,讓我們基地R.的mtcars數據集
我可以用data.table語法寫:
mtcars[am == 1, .N ]
但是,如果感興趣的變量的名稱 - 即am - 被存儲爲一個字符向量,即「am」?
您的建議將不勝感激。
我正在使用data.table,我想過濾一個函數中的data.table,我將該列的名稱作爲字符向量傳遞。引用通過data.table中的字符變量的列R
舉個簡單重複的例子,讓我們基地R.的mtcars數據集
我可以用data.table語法寫:
mtcars[am == 1, .N ]
但是,如果感興趣的變量的名稱 - 即am - 被存儲爲一個字符向量,即「am」?
您的建議將不勝感激。
一種選擇是使用get
(得到按照名字搜索對象?):
mtcars[get('am') == 1, .N]
# [1] 13
另一種選擇是在.SDcols
mtcars[, sum(.SD==1) ,.SDcols = 'am']
#[1] 13
指定它我們也可以包括多個變量
mtcars[, sum(Reduce(`&`, lapply(.SD, `==`, 1))), .SDcols = c('am', 'carb')]
#[1] 4
'DT = data.table (mtcars); vname =「am」; DT [。(1),on = vname,.N]'是我所要做的。 – Frank