将元素分配到R中

问题描述 投票:1回答:1

我们可以使用append函数将元素添加到列表中。例如打击。

a_list <- list()
a_list <- append(a_list, "a")

但我想这样做。 append_new不返回而是更改a_list。

a_list <- list()
append_new(a_list, "a")

eval功能可以用来执行此操作。

a_list <- list()
eval(parse(text="a_list[[1]]<-a"))
a_list

但是如果我想编写函数add_element_to_list

a_list <- list()
add_element_to_list(a_list, "a")
a_list  ##  same as list("a")

如何编写函数?此功能类似于assign,但功能更强大。

post使用eval(parse(text="")),但无法在自定义功能append_new中写入。

r pointers methods eval assign
1个回答
0
投票

也许是这样?

add_element_to_list <- function(this, that)
{
  if(typeof(this) != "list") stop("append_new requires a list as first argument")
  assign(deparse(substitute(this)), 
         append(this, that), 
         envir = parent.frame(),
         inherits = TRUE)
}

a_list <- list()
add_element_to_list(a_list, "a")
a_list 
#> [[1]]
#> [1] "a"

reprex package(v0.3.0)在2020-02-25创建

© www.soinside.com 2019 - 2024. All rights reserved.