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

更新R表达式

r
  •  2
  • yake84  · 技术社区  · 5 年前

    我想交换一些用户编写的代码。我不知道如何更新这些表情。我可以 append() ,但不是 replace()

    orig_code <-
      parse(text = 
        "library(tidyverse)   
        list_1 <- list(a = 1, b = 2)"
      )
    
    new_code <- parse(text = "list_1 <- list(a = 1:3)")
    
    
    # I can append
    append(
      x = orig_code,
      values = new_code
    )
    #> expression(
    #>   library(tidyverse), 
    #>   list_1 <- list(a = 1, b = 2), 
    #>   list_1 <- list(a = 1:3)
    #> )
    
    
    # but not replace
    replace(
      x = orig_code,
      list = 2,
      values = new_code
    )
    #> expression(
    #>   library(tidyverse), 
    #>   list_1 <- list(a = 1, b = 2)
    #> )
    
    # or reassign
    orig_code[[2]] <- new_code
    
    orig_code
    #> expression(
    #>   library(tidyverse), 
    #>   list_1 <- list(a = 1, b = 2)
    #> )
    

    创建于2020-07-05 reprex package

    1 回复  |  直到 5 年前
        1
  •  7
  •   akrun    5 年前

    list ,然后执行 replace 把它改成 expression

    as.expression(c(replace(
       x = as.list(orig_code),
      list = 2,
       values = as.list(new_code
        ))))
    #expression(library(tidyverse), list_1 <- list(a = 1:3))