我有一个列表,并希望将列表的元素分解为全局环境中的单独对象.
例如,我想要列表:
obj <- list(a=1:5, b=2:10, c=-5:5)
Run Code Online (Sandbox Code Playgroud)
是三个单独的对象a,b和c.
我尝试用以下方法实现这一点:
lapply(obj, FUN = function(x) names(x)[1] <<- x[1])
Run Code Online (Sandbox Code Playgroud)
但它失败了Error in names(x)[1] <<- x[1] : object 'x' not found.
我怎样才能实现目标?
我经常想在全局环境下的环境中创建许多变量.这可以通过envir参数轻松完成sys.source- 如果由文件创建的所有变量都应该进入单个环境.
但我通常使用一个创建变量集的文件.一组应该进入一个环境,另一组进入另一个环境,依此类推.我不想将此文件拆分为多个文件,然后进行多次调用sys.source.
相反,我想要一个命令,让我更改默认环境以分配新变量.例如:
e <- new.env()
setDefaultEnvironment(e)
tmp <- 2
e$tmp # 2
.GlobalEnv$tmp # Error: object 'tmp' not found
Run Code Online (Sandbox Code Playgroud)
但这setDefaultEnvironment不是一个真正的命令.
在R中有没有安全的方法来做这种事情?
我想将变量列表传递给 saveRDS() 以保存它们的值,但它保存了它们的名称:
variables <- c("A", "B", "C")
saveRDS(variables, "file.R")
Run Code Online (Sandbox Code Playgroud)
它保存了单个向量“变量”。
我也试过:
save(variables, "file.RData")
Run Code Online (Sandbox Code Playgroud)
没有成功