繁体   English   中英

R:滚动相关/非标准评估

[英]R: rolling correlation / non-standard evaluation

我正在尝试计算小标题上的滚动相关性,并在循环中遍历列名。 不过,我似乎在努力将变量传递给函数。 这有效:

tbl <- tibble(date = seq(as.Date("1983-03-31"), by=7, length.out=100), 
    col1 = 1:100, col2 = sample(100, size = 100, replace=TRUE), col3 = col1 + col2)
tbl %>% 
    tq_mutate_xy(
        x = col1,
        y = col3,
        mutate_fun = runCor,
        n = 10,
        use = "pairwise.complete.obs",
        col_rename = "col1_col3_corr"
      )

但这不是:

tbl <- tibble(date = seq(as.Date("1983-03-31"), by=7, length.out=100), 
    col1 = 1:100, col2 = sample(100, size = 100, replace=TRUE), col3 = col1 + col2)
c1 <- "col1"
c2 <- "col3"
tbl %>% 
    tq_mutate_xy(
        x = !!c1,
        y = !!c2,
        mutate_fun = runCor,
        n = 10,
        use = "pairwise.complete.obs",
        col_rename = paste0(c1, "_", c2, "_corr")
    )

错误是“ check_x_y_valid(data,x,y)中的错误:x =!(!c1)不是有效的名称。”

我究竟做错了什么?

首先,我认为您需要tq_mutate_xy的非标准评估(NSE)版本-即tq_mutate_xy_ 结果,当您使用这些功能的NSE时,您需要使用字符串-这意味着您的mutate_fun变量也应该是字符串。 以下应该工作:

c1 <- "col1"
c2 <- "col3"
tbl %>% 
  tq_mutate_xy_(
    x = c1,
    y = c2,
    mutate_fun = "runCor",
    n = 10,
    use = "pairwise.complete.obs",
    col_rename = paste0(c1, "_", c2, "_corr")
  )

请确保从帮助文档?tq_mutate_xy查看示例5 ?tq_mutate_xy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM