Прежде чем использовать eval
parse
, я надеюсь, что вы прошли через некоторые чтения, такие как
Какие конкретно опасности eval (parse (…))?
и многие другие, которые доступны.
Однако, чтобы ответить на ваш вопрос, мы можем продолжить ваш поток и использовать eval
parse
в sapply
+(sapply(seq_len(nrow(cond)), function(i)
eval(parse(text=paste0("with(x,",cond[i,'condition'],")")))))
# [,1] [,2]
#[1,] 0 0
#[2,] 1 1
#[3,] 1 0
Чтобы добавить его в кадр данных,
x[paste0("condition", 1:nrow(cond))] <-
+(sapply(seq_len(nrow(cond)), function(i)
eval(parse(text=paste0("with(x,",cond[i,'condition'],")")))))
x
# A B condition1 condition2
#1 1 2 0 0
#2 2 3 1 1
#3 3 4 1 0
Немного упростить его (используя комментарий @ jogo)
+(sapply(cond$condition, function(i) with(x, eval(parse(text=as.character(i))))))
# [,1] [,2]
#[1,] 0 0
#[2,] 1 1
#[3,] 1 0