我们可以使用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
中写入。
也许是这样?
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创建