如何获取当前环境中可用的数据框名称向量?我试过了:
sapply(ls(), is.data.frame)
但这失败了,因为ls
返回字符串向量。我打算将此列表用作 Shiny 应用程序中动态选择的输入。
您可以使用eapply
循环遍历环境中的对象:
x <- 1:10
y <- mtcars
eapply(.GlobalEnv,is.data.frame)
$x
[1] FALSE
$y
[1] TRUE
names(which(unlist(eapply(.GlobalEnv,is.data.frame))))
[1] "y"
我认为您是在询问这些数据框的实际名称,而不是数据框本身?你可以做:
l <- ls()
l[sapply(l, function(x) is.data.frame(get(x)))]
get()
将返回给定角色名称的对象的值。
做基本相同的事情的更整洁的方式:
Filter(function(x) is.data.frame(get(x)), ls())
你需要get
,试试这个:
x <- sapply(sapply(ls(), get), is.data.frame)
names(x)[(x==TRUE)]
我使用lsos()
基于这个问题的修改功能
library(devtools)
source_url("https://raw.github.com/rsaporta/pubR/gitbranch/memoryFunctions.R")
## only show data.frames of at least ~1KB
lsos(t="data.frame")
## show data.frames of any size
lsos(t="data.frame", b=1)
### OUTPUT
KB Type Rows Columns
anotherDF 5 data.frame 50 4
df 0.8 data.frame 5 2