[英]How to use variables to subset a data.table
在這一個上撓我的頭。 假設我正在探索汽車數據集
data(mtcars)
test_dt <- as.data.table(mtcars)
我可以使用以下內容輕松地對表進行子集化:
new_dt <- test_dt[cyl == '4', c('disp', 'hp', 'gear')]
我得到11行數據。 現在假設我想創建一個函數,其中我傳遞列的名稱以及過濾器的值進行過濾,這樣我就可以創建我想要的任何數據組合。 像這樣的東西:
foo <- function(colToFilter, filterValue) {
new_dt <- test_dt[colToFilter == filterValue, c('disp', 'hp', 'gear')]
return(new_dt)
}
並稱之為:
new_dt <- foo('cyl', '4')
該函數不會拋出錯誤但返回0行。 如何修復我的功能,以便像以前一樣返回11行? TIA
為了使你的功能工作,它應該是這樣的:
foo <- function(colToFilter, filterValue) {
#you need get in order to 'get' the column named cyl
new_dt <- test_dt[get(colToFilter) == filterValue, list(disp, hp, gear)]
return(new_dt)
}
日期:
> foo('cyl', '4')
disp hp gear
1: 108.0 93 4
2: 146.7 62 4
3: 140.8 95 4
4: 78.7 66 4
5: 75.7 52 4
6: 71.1 65 4
7: 120.1 97 3
8: 79.0 66 4
9: 120.3 91 5
10: 95.1 113 5
11: 121.0 109 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.