r
  • dplyr
  • tibble
  • 2017-08-17 103 views 2 likes 
    2

    此代码不起作用在tibble添加一列:add_column与变量列名tibble

    library(tidyverse) 
        df <- data.frame("Oranges" = 5) 
        mycols <- c("Apples", "Bananas", "Oranges") 
        add_column(df, mycols[[2]] = 7) 
    

    我得到的错误信息:

    Error: unexpected '=' in "add_column(df, mycols[[2]] =" 
    

    但此代码的工作:

    add_column(df, "Bananas" = 7) 
    

    为什么?

    我不知道'mycols'的值提前。这就是为什么我写我的代码,它是一个变量。这在dplry中不可行吗?

    +0

    'add_column'来自'tibble'包。请考虑编辑您的标题。 – www

    回答

    5

    那么,add_column似乎来自tibble而不是dplyr,但它确实使用新的tidy eval语法。您可以使用

    add_column(df, !!(mycols[2]) := 7) 
    

    注意!!:=:=允许您为参数名称使用变量,!!将表达式扩展为字符串。

    +0

    尼斯解决方案... – Sagar

    +0

    工作,谢谢。我懂了 !!和:=在帮助文件中,但我不理解文档,我以前从未见过它们。你能简要说明他们做了什么吗? – Joe

    +1

    @Joe看看这里:http://dplyr.tidyverse.org/articles/programming.html – MrFlick

    相关问题