Filter data table by dynamic column name

前端 未结 4 1513
失恋的感觉
失恋的感觉 2020-12-11 06:40

lets say I have a data.table with columns A, B and C

I\'d like to write a function that applies a filter (for example A>1) but \"A\" needs to be dynamic (the functio

4条回答
  •  死守一世寂寞
    2020-12-11 07:09

    You can try

    f1 <- function(dat, colName){dat[eval(as.name(colName))>1]}
    setDT(df1)
    f1(df1, 'A')
    f1(df1, 'B')
    

    If you need to make the value also dynamic

    f2 <- function(dat, colName, value){dat[eval(as.name(colName))>value]}
    f2(df1, 'A', 1)
    f2(df1, 'A', 5)
    

    data

    set.seed(24)
    df1 <- data.frame(A=sample(-5:10, 20, replace=TRUE), 
          B=rnorm(20), C=LETTERS[1:20], stringsAsFactors=FALSE) 
    

提交回复
热议问题