如何获取当前环境中可用的数据框名称向量?我试过了:
sapply(ls(), is.data.frame)
Run Code Online (Sandbox Code Playgroud)
但这失败了因为ls返回字符串的向量.我打算使用此列表作为Shiny app中动态选择的输入.
Jam*_*mes 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"
Run Code Online (Sandbox Code Playgroud)
我认为您是在询问这些数据框的实际名称而不是数据框本身?你可以做:
l <- ls()
l[sapply(l, function(x) is.data.frame(get(x)))]
Run Code Online (Sandbox Code Playgroud)
get() 将返回给定角色名称的对象的值。
做基本相同的事情的更整洁的方式:
Filter(function(x) is.data.frame(get(x)), ls())
Run Code Online (Sandbox Code Playgroud)
你需要get,试试这个:
x <- sapply(sapply(ls(), get), is.data.frame)
names(x)[(x==TRUE)]
Run Code Online (Sandbox Code Playgroud)