可以对存储在项目环境中的所有特定对象调用一个函数吗?
Possible to call a function to all particular objects stored in project environment?
我愚蠢地一直在 R 项目中创建大量新的 data_frames,试图在不进行适当提交的情况下解决特定问题。在检查了所有实用名称和大部分希腊字母表之后,我现在拥有一个充满 data_frame 个对象的环境,这些对象的名称如 'bob'、'might.work'、'almostthere'。我想使用循环函数 - lapply 或其他 - return 一些指标,这些指标会告诉我有关环境中每个数据框对象的信息。然后我可以根据 return 清理 up/delete。
那么在R项目环境下是否可以使用lapply访问所有data_frames?是这样的吗?
lapply(environment, function (x){
if(is.dataframe(x)){
dplyr::glimpse(x)
}
}
谢谢。
当然可以!
lapply(ls(),function(x){
o = get(x,envir = globalenv())
cat("if"(is.data.frame(o),paste0(x," is a data frame!\n"),"Nope.\n"))
})
ls()
将列出环境中的所有对象名称(默认为全局)。
- 由于这只是一个名称,我们需要
get
值但指定全局环境(因为此时我们处于函数环境中)
- 然后我
cat
如果它是一个数据框,但你可以用 o
对象做任何你想做的事。
下面的函数会return继承自classdata.frame
环境environ
的对象,默认为.GlobalEnv
.
getDataFrames <- function(environ = .GlobalEnv){
l <- ls(name = environ)
res <- NULL
for(i in seq_along(l)){
r <- inherits(get(l[i], envir = environ), "data.frame")
if(r) res <- c(res, l[i])
}
res
}
getDataFrames()
eapply()
函数可以轻松迭代环境中的对象
eapply(globalenv(), function(x) if (is.data.frame(x)) dplyr::glimpse(x))
我愚蠢地一直在 R 项目中创建大量新的 data_frames,试图在不进行适当提交的情况下解决特定问题。在检查了所有实用名称和大部分希腊字母表之后,我现在拥有一个充满 data_frame 个对象的环境,这些对象的名称如 'bob'、'might.work'、'almostthere'。我想使用循环函数 - lapply 或其他 - return 一些指标,这些指标会告诉我有关环境中每个数据框对象的信息。然后我可以根据 return 清理 up/delete。
那么在R项目环境下是否可以使用lapply访问所有data_frames?是这样的吗?
lapply(environment, function (x){
if(is.dataframe(x)){
dplyr::glimpse(x)
}
}
谢谢。
当然可以!
lapply(ls(),function(x){
o = get(x,envir = globalenv())
cat("if"(is.data.frame(o),paste0(x," is a data frame!\n"),"Nope.\n"))
})
ls()
将列出环境中的所有对象名称(默认为全局)。- 由于这只是一个名称,我们需要
get
值但指定全局环境(因为此时我们处于函数环境中) - 然后我
cat
如果它是一个数据框,但你可以用o
对象做任何你想做的事。
下面的函数会return继承自classdata.frame
环境environ
的对象,默认为.GlobalEnv
.
getDataFrames <- function(environ = .GlobalEnv){
l <- ls(name = environ)
res <- NULL
for(i in seq_along(l)){
r <- inherits(get(l[i], envir = environ), "data.frame")
if(r) res <- c(res, l[i])
}
res
}
getDataFrames()
eapply()
函数可以轻松迭代环境中的对象
eapply(globalenv(), function(x) if (is.data.frame(x)) dplyr::glimpse(x))