代码之家  ›  专栏  ›  技术社区  ›  Vlo

管道%>%的这行代码有什么问题?

  •  0
  • Vlo  · 技术社区  · 9 年前

    我试着跑。

    1:10 %>% replace(`>`(.,4), 999)
    Error in replace(`1:10`, . > 4, 999) : object '.' not found
    

    也许我一直在使用 . 一直都错了,所以我去看 magrittr 文档我学会了使用 {} 覆盖传递 . 作为第一个参数。

    所以现在我试着

    1:10 %>% {replace(., `>`(.,4), 999)}
    Error in replace(`1:10`, . > 4, 999) : object '.' not found
    

    不,还是不行。我运行以下示例代码 {} (第9页)

    1:10 %>% {c(min(.), max(.))}
    Error in eval(expr, envir, enclos) : object '.' not found
    

    示例代码对我都不起作用。我做错了什么?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ben Bolker    9 年前

    我同意@Akrun无法再现错误,但

    1:10 %>% replace(.>4,999)
    

    看起来更简单,更容易阅读。(这是与 magrittr 版本1.5,没有加载其他非基本包,工作区中没有其他内容。)

    附带评论:我认为这是一个更长/更复杂的工作流程的一部分。如果你只是更换 replace(x,x>4,999) 具有 x %>% replace(.>4,999) 我不确定我明白这一点。。。