How to write an R function that evaluates an expression within a data-frame

前端 未结 4 1580
梦谈多话
梦谈多话 2020-12-05 16:09

Puzzle for the R cognoscenti: Say we have a data-frame:

df <- data.frame( a = 1:5, b = 1:5 )

I know we can do things like



        
4条回答
  •  无人及你
    2020-12-05 16:30

    A late entry, but the data.table approach and syntax would appear to be what you are after. This is exactly how [.data.table works with the j, i and by arguments.

    If you need it in the form fn(x,expr), then you can use the following

    library(data.table)
    
    DT <- data.table(a = 1:5, b = 2:6)
    
    `[`(x=DT, j=a)
    
    ## [1] 1 2 3 4 5
    
     `[`(x=DT, j=a * b)
    ## [1]  2  6 12 20 30
    

    I think it is easier to use in more native form

    DT[,a]
    ## [1] 1 2 3 4 5
    

    and so on. In the background this is using substitute and eval

提交回复
热议问题