簡體   English   中英

如何使用變量對data.table進行子集化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM