2015-10-22 7 views
2

Учитывая фрейм данныхR ленивые вычисления двух переменных в data.frame

df <- data.frame(a = sample(c(1,0), 30, replace = TRUE), 
      b = sample(c(2,3), 30, replace = TRUE), 
      c = sample(c(4,5), 30, replace = TRUE)) 

и выражение захваченного lazy() аргумента в lazyeval пакете

library(lazyeval) 
toeval <- lazy(c(a,b)) 

Я хочу, чтобы получить кадр данных с этими двумя переменными a и b вместо одного конкатенированного вектора, как указано в

result <- lazy_eval(toeval, df) 

unelegant версия мгновенно приходит на ум один

df_result <- data.frame(a = result[1:(nrow(df))], 
         b = result[(nrow(df)+1):(nrow(df)*2)]) 

Лучше идеи очень ценится!

ответ

3

Вы можете попробовать:

toeval <- lazy(list(a,b)) 
data.frame(do.call(cbind, lazy_eval(toeval, df))) 
Смежные вопросы