获取可用数据框列表

时间:2013-10-30 14:17:25

标签: r shiny

如何获取当前环境中可用的数据框名称向量?我试过了:

sapply(ls(), is.data.frame)

但是这会失败,因为ls返回字符串向量。我打算在Shiny app中使用此列表作为动态选择的输入。

4 个答案:

答案 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