标记R脚本中的magrittr管道中的对象

时间:2018-05-07 15:03:29

标签: r

在解析R脚本以标记管道调用中的任何对象时,有没有办法,%>%还是+.gg

在示例中我如何知道管道呼叫中的对象是什么?

path <- tempfile(fileext = '.R')

script <- 'myfun <- function(x){

  ret <- mtcars%>%
    mutate(mpg2=mpg*x)

  ret <- ret%>%
    dplyr::mutate(mpg3=mpg2^2)

}'

cat(script,file = path,sep='\n')

p <- parse(path)

print(utils::getParseData(p))
#>    line1 col1 line2 col2 id parent                token terminal     text
#> 78     1    1     9    1 78      0                 expr    FALSE         
#> 1      1    1     1    5  1      3               SYMBOL     TRUE    myfun
#> 3      1    1     1    5  3     78                 expr    FALSE         
#> 2      1    7     1    8  2     78          LEFT_ASSIGN     TRUE       <-
#> 77     1   10     9    1 77     78                 expr    FALSE         
#> 4      1   10     1   17  4     77             FUNCTION     TRUE function
#> 5      1   18     1   18  5     77                  '('     TRUE        (
#> 6      1   19     1   19  6     77       SYMBOL_FORMALS     TRUE        x
#> 7      1   20     1   20  7     77                  ')'     TRUE        )
#> 74     1   21     9    1 74     77                 expr    FALSE         
#> 9      1   21     1   21  9     74                  '{'     TRUE        {
#> 36     3    3     4   22 36     74                 expr    FALSE         
#> 12     3    3     3    5 12     14               SYMBOL     TRUE      ret
#> 14     3    3     3    5 14     36                 expr    FALSE         
#> 13     3    7     3    8 13     36          LEFT_ASSIGN     TRUE       <-
#> 35     3   10     4   22 35     36                 expr    FALSE         
#> 15     3   10     3   15 15     17               SYMBOL     TRUE   mtcars
#> 17     3   10     3   15 17     35                 expr    FALSE         
#> 16     3   16     3   18 16     35              SPECIAL     TRUE      %>%
#> 33     4    5     4   22 33     35                 expr    FALSE         
#> 19     4    5     4   10 19     21 SYMBOL_FUNCTION_CALL     TRUE   mutate
#> 21     4    5     4   10 21     33                 expr    FALSE         
#> 20     4   11     4   11 20     33                  '('     TRUE        (
#> 22     4   12     4   15 22     33           SYMBOL_SUB     TRUE     mpg2
#> 23     4   16     4   16 23     33               EQ_SUB     TRUE        =
#> 30     4   17     4   21 30     33                 expr    FALSE         
#> 24     4   17     4   19 24     26               SYMBOL     TRUE      mpg
#> 26     4   17     4   19 26     30                 expr    FALSE         
#> 25     4   20     4   20 25     30                  '*'     TRUE        *
#> 27     4   21     4   21 27     29               SYMBOL     TRUE        x
#> 29     4   21     4   21 29     30                 expr    FALSE         
#> 28     4   22     4   22 28     33                  ')'     TRUE        )
#> 67     6    3     7   30 67     74                 expr    FALSE         
#> 41     6    3     6    5 41     43               SYMBOL     TRUE      ret
#> 43     6    3     6    5 43     67                 expr    FALSE         
#> 42     6    7     6    8 42     67          LEFT_ASSIGN     TRUE       <-
#> 66     6   10     7   30 66     67                 expr    FALSE         
#> 44     6   10     6   12 44     46               SYMBOL     TRUE      ret
#> 46     6   10     6   12 46     66                 expr    FALSE         
#> 45     6   13     6   15 45     66              SPECIAL     TRUE      %>%
#> 64     7    5     7   30 64     66                 expr    FALSE         
#> 51     7    5     7   17 51     64                 expr    FALSE         
#> 48     7    5     7    9 48     51       SYMBOL_PACKAGE     TRUE    dplyr
#> 49     7   10     7   11 49     51               NS_GET     TRUE       ::
#> 50     7   12     7   17 50     51 SYMBOL_FUNCTION_CALL     TRUE   mutate
#> 52     7   18     7   18 52     64                  '('     TRUE        (
#> 53     7   19     7   22 53     64           SYMBOL_SUB     TRUE     mpg3
#> 54     7   23     7   23 54     64               EQ_SUB     TRUE        =
#> 61     7   24     7   29 61     64                 expr    FALSE         
#> 55     7   24     7   27 55     57               SYMBOL     TRUE     mpg2
#> 57     7   24     7   27 57     61                 expr    FALSE         
#> 56     7   28     7   28 56     61                  '^'     TRUE        ^
#> 58     7   29     7   29 58     59            NUM_CONST     TRUE        2
#> 59     7   29     7   29 59     61                 expr    FALSE         
#> 60     7   30     7   30 60     64                  ')'     TRUE        )
#> 72     9    1     9    1 72     74                  '}'     TRUE        }

reprex package(v0.2.0)创建于2018-05-07。

0 个答案:

没有答案