将数据框加载到列表中
Load data frames into list
我正在尝试将一堆 *.Rdata 加载到列表中。
files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)
这将创建一个列表,其中每个元素都有数据框的名称,但没有其他内容。
如果我重新定义文件使其只包含第一个文件,然后调用:
load(files)
然后是"works",但是'files'里的文件是分配给全局环境的,这不是我想要的。
我想以一个列表结尾,其中每个元素都包含数据框。这样当我进行数据处理时,我可以 lapply 遍历列表。
现已测试,确实有效!
e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)
你可以试试
lapply(files, function(x) mget(load(x)))
mget
将 return 列表中对象的值。在您的 .Rdata
文件中,每个文件只有一个 'data.frame' 对象。所以,即使 get
也应该有效。
在您的代码中,
load(files[1])
对象将在全局环境中找到。假设,对象是 'd1',通过在控制台输入 'd1',你可以得到对象的值。同理
lapply(files, load, .GlobalEnv)
加载全局环境中的对象,可以通过键入访问。我猜你的问题是获取列表中的值,这可以用 get
或 mget
来完成。
我正在尝试将一堆 *.Rdata 加载到列表中。
files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)
这将创建一个列表,其中每个元素都有数据框的名称,但没有其他内容。
如果我重新定义文件使其只包含第一个文件,然后调用:
load(files)
然后是"works",但是'files'里的文件是分配给全局环境的,这不是我想要的。
我想以一个列表结尾,其中每个元素都包含数据框。这样当我进行数据处理时,我可以 lapply 遍历列表。
现已测试,确实有效!
e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)
你可以试试
lapply(files, function(x) mget(load(x)))
mget
将 return 列表中对象的值。在您的 .Rdata
文件中,每个文件只有一个 'data.frame' 对象。所以,即使 get
也应该有效。
在您的代码中,
load(files[1])
对象将在全局环境中找到。假设,对象是 'd1',通过在控制台输入 'd1',你可以得到对象的值。同理
lapply(files, load, .GlobalEnv)
加载全局环境中的对象,可以通过键入访问。我猜你的问题是获取列表中的值,这可以用 get
或 mget
来完成。