什么是在dplyr 0.3中使用动态输入进行编程的好习惯

时间:2014-10-02 15:16:47

标签: join eval shiny dplyr

我这样做的初衷是将dplyr与闪亮的

集成

在0.3之前我使用了eval(parse(text = ....)),do.call()方法。

在0.3中,我看到了另外两个选项,例如:

var <- c('disp','hp')
select_(mtcars,.dots = as.lazy_dots(var))
select(mtcars,one_of(var))

但哪一个更好?我打算从Shiny app传递selectInput值,通过dplyr进行数据转换。

另一个问题是,使用动态但不同的键列连接两个不同数据集的正确方法是什么?我有什么可以在0.3中使用的吗?

例如,

col_a,col_b是从数据集加入的关键变量a&amp; B'/ P>

left_join(dataset_a,dataset_b, by=c(col_a=col_b))

感谢。

1 个答案:

答案 0 :(得分:1)

经过几次尝试后,这是我对第二个问题的解决方案,使用函数创建一个命名向量,然后输入到left_join。

joinCol_a = xxx
joinCol_b = xxx

f <- function(a,b){
  vec <- c(b)
  names(vec) <- a
  return(vec)
}
left_join(dataset_a,dataset_b,by=f(joinCol_a,joinCol_b))

我知道这不是最好的解决方案,但这是我到目前为止所能想到的。