рассмотрим следующий пример
df1 <- data.frame(a=c(1,2,3),b=c(2,4,6));
transform(df1,c=a+b)
a b c
1 1 2 3
2 2 4 6
3 3 6 9
Все идет нормально. Теперь я хотел бы закодировать это динамически, используя as.formula:
transform(df1,as.formula("c=a+b"))
Однако Р говорит
Error in eval(expr, envir, enclos) : object 'b' not found
Эта ошибка не возникает при использовании «~» в качестве разделителя левой и правой сторон. Можно ли как-то задержать оценку формулы? Можно ли вообще использовать as.formula в задании? Я пытался возиться с «с», но безрезультатно.
expression
, а не формулами. Тем не менее, похоже, что в конечном итоге вы получите какую-то вариациюeval(parse(text="whatever"))
, что приведет к ужасному, ужасному коду и трудным для поиска ошибкам. Если возможно, попробуйте сделать что-нибудь менее умное. - person Richie Cotton   schedule 01.02.2012df1[["c"]] <- something
. Переход от"a+b"
к оценке вdf1
означаетeval(parse(text = "a+b"), df1)
или что-то столь же уродливое. Я предлагаю вам рассказать нам больше о том, чего вы пытаетесь достичь, чтобы мы могли помочь придумать альтернативу. - person Richie Cotton   schedule 01.02.2012