如何获取当前环境中可用的数据框名称向量?我试过了:
sapply(ls(), is.data.frame)
但是这会失败,因为ls
返回字符串向量。我打算在Shiny app中使用此列表作为动态选择的输入。
答案 0 :(得分:13)
您可以使用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"
答案 1 :(得分:3)
您需要get
,试试这个:
x <- sapply(sapply(ls(), get), is.data.frame)
names(x)[(x==TRUE)]
答案 2 :(得分:3)
我认为您要求这些数据帧的实际名称而不是数据框本身?你可以这样做:
l <- ls()
l[sapply(l, function(x) is.data.frame(get(x)))]
get()
将返回给定字符名称的对象的值。
基本上做同样事情的整洁方式:
Filter(function(x) is.data.frame(get(x)), ls())
答案 3 :(得分:2)
我使用基于this question
的修改后的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