如何在summarise_all,summarise_if等内部引用特定变量?

时间:2019-12-17 19:29:43

标签: r dplyr

我想对数据框中的所有列应用函数,并使用数据框中的另一列作为输入。例如,假设我想将每一列与给定列x的协方差。我可以使用summarise_all吗?

df <- data.frame( x=1:100, y=100:1, z=1)
df %>% summarise( cov.x=cov(x,x), cov.y=cov(y,x), cov.z=cov(z,x) )
    # I want to do this ...
df %>% summarise_all( function(vv) cov(vv,x) )
    # ... using a syntax like this ...

后面的这些版本给我一个错误,说:

    >> Error in summarise_impl(.data, dots) : 
    >>   Evaluation error: object 'x' not found.

同样,这是

df %>% summarise_all( cov(.,x) )

导致此错误:

    >> Error in is.data.frame(y) : object 'x' not found

非常感谢

1 个答案:

答案 0 :(得分:2)

df %>% summarise_all( function(vv) cov(vv,.$x) )