在R中的lapply()中使用eval()定义变量

时间:2018-11-27 13:55:50

标签: r

首先我定义

args <- c("x=5", "y=10")

以下内容在R中具有预期的行为(在全局环境中创建变量x和y)

for (i in 1:length(args)) {
  eval(parse(text=args[[i]]))
}

但是,以下内容仅返回未命名列表。

lapply(args, function(a) eval(parse(text = a)))

可以使用apply函数创建变量而不是循环吗?

1 个答案:

答案 0 :(得分:2)

我们创建一个名为list,然后使用list2env

list2env(setNames(lapply(args, function(a) eval(parse(text = a))), 
            sub("\\=.*", "", args)), envir = .GlobalEnv)
x
#[1] 5
y
#[1] 10