Evaluate different logical conditions from string for each row

后端 未结 4 1698
小鲜肉
小鲜肉 2020-12-11 18:33

I have a data.frame like this:

  value     condition
1  0.46   value > 0.5
2  0.96 value == 0.79
3  0.45 value <= 0.65
4  0.68 value == 0.         


        
4条回答
  •  北海茫月
    2020-12-11 19:12

    One straightforward and easy solution would be using eval(parse...

    library(dplyr)
    
    df %>%
      rowwise() %>%
      mutate(goal = eval(parse(text = condition)))
    
    # A tibble: 9 x 3
    #  value condition     goal 
    #            
    #1 0.46  value > 0.5   FALSE
    #2 0.96  value == 0.79 FALSE
    #3 0.45  value <= 0.65 TRUE 
    #4 0.68  value == 0.88 FALSE
    #5 0.570 value < 0.9   TRUE 
    #6 0.1   value > 0.01  TRUE 
    #7 0.9   value >= 0.6  TRUE 
    #8 0.25  value < 0.91  TRUE 
    #9 0.04  value > 0.2   FALSE
    

    However, I would recommend reading some posts before using it.

提交回复
热议问题