加载 .rda 文件并遍历其对象
Load a .rda file and iterate over its objects
我加载了一个 rda 文件,它基本上是一个数据帧列表。
我如何遍历 is 对象?
>load(data)
>attach(data)
The following objects are masked _by_ .GlobalEnv:
GSE109597, GSE18897, GSE32575, GSE53232, GSE55205, GSE69039,
GSE83223, GSE87493, GSE98895
> R » objects()
[1] "GSE109597" "GSE18897" "GSE32575" "GSE53232" "GSE55205" "GSE69039"
[7] "GSE83223" "GSE87493" "GSE98895"
两个想法:
显式加载到一个新的空环境中,然后在那里处理它们:
e <- new.env(parent = emptyenv())
load(filename, envir = e)
out <- eapply(e, function(x) {
# do something with x
})
从?load
,它returns一个"character vector of the names of objects created, invisibly"。如果您捕获(不可见的)矢量,您应该能够执行以下操作:
nms <- load(data)
for (nm in nms) {
x <- get(nm)
# do something with x
# optional, save it back with assign(nm, x)
}
# or to capture all data into a list (similar to bullet 1 above)
out <- lapply(lapply(nms, get), function(x) {
# do something with x
})
出于以下几个原因,我更喜欢第一个(基于环境的)解决方案:
- 它将永远不会覆盖
.GlobalEnv
中的任何东西......已经了解到有时无法重现的问题 , 这对我来说太重要了
- 它鼓励一种类似列表的做事方式,当
.rda
文件中的大多数或所有对象都相同时更重要 "thing" (例如,框架,列表)和我计划对他们每个人执行相同的操作
- 如果对数据源有任何疑问,它不会弄乱我的任何命名空间或全局环境
我加载了一个 rda 文件,它基本上是一个数据帧列表。 我如何遍历 is 对象?
>load(data)
>attach(data)
The following objects are masked _by_ .GlobalEnv:
GSE109597, GSE18897, GSE32575, GSE53232, GSE55205, GSE69039,
GSE83223, GSE87493, GSE98895
> R » objects()
[1] "GSE109597" "GSE18897" "GSE32575" "GSE53232" "GSE55205" "GSE69039"
[7] "GSE83223" "GSE87493" "GSE98895"
两个想法:
显式加载到一个新的空环境中,然后在那里处理它们:
e <- new.env(parent = emptyenv()) load(filename, envir = e) out <- eapply(e, function(x) { # do something with x })
从
?load
,它returns一个"character vector of the names of objects created, invisibly"。如果您捕获(不可见的)矢量,您应该能够执行以下操作:nms <- load(data) for (nm in nms) { x <- get(nm) # do something with x # optional, save it back with assign(nm, x) } # or to capture all data into a list (similar to bullet 1 above) out <- lapply(lapply(nms, get), function(x) { # do something with x })
出于以下几个原因,我更喜欢第一个(基于环境的)解决方案:
- 它将永远不会覆盖
.GlobalEnv
中的任何东西......已经了解到有时无法重现的问题 , 这对我来说太重要了 - 它鼓励一种类似列表的做事方式,当
.rda
文件中的大多数或所有对象都相同时更重要 "thing" (例如,框架,列表)和我计划对他们每个人执行相同的操作 - 如果对数据源有任何疑问,它不会弄乱我的任何命名空间或全局环境