打印工作区中的所有对象

Ric*_*ico 17 workspace r object

我无法找到如何列出和打印工作区中的所有对象.我希望看到所有这些,并了解正在发生的事情.例如,ls()为您提供30个对象.除了单独输入外,还可以显示所有内容.看起来如此微不足道,解决方案可能会非常尴尬.我最接近的是ls.str()循环对象的想法.

编辑:这不适用于数据框.我有一个充满功能的工作区,没有数据,并且想要了解哪些参考哪些等等.

mat*_*fee 31

你的意思是"显示"的意思是"对于每个对象ls(),我想看看如果我在提示符中键入它会看到什么"?如果你有一些1000x10000的矩阵怎么办 - 你还想打印吗?我个人喜欢ls.str()- 我认为它给出了一个非常简洁的概述,并处理了我刚刚提到的案例.

但是,如果你想在提示符中输入每个对象的基本上"显示"每个对象,我建议一个循环:

for ( obj in ls() ) { print(get(obj)) }
Run Code Online (Sandbox Code Playgroud)

因为ls()返回变量名的字符向量,我需要使用get(obj)它来获取其名称所在的变量obj.

您可能希望对此进行更改以便打印变量名称,例如

for ( obj in ls() ) { cat('---',obj,'---\n'); print(get(obj)) }
Run Code Online (Sandbox Code Playgroud)

举个例子:

> a <- 1
> b <- LETTERS[1:10]
> c <- data.frame(a=LETTERS[1:10],b=runif(10))
> for ( obj in ls() ) { cat('---',obj,'---\n'); print(get(obj)) }
--- a ---
[1] 1
--- b ---
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
--- c ---
   a         b
1  A 0.1087306
2  B 0.9577797
3  C 0.8995034
4  D 0.1434574
5  E 0.3548047
6  F 0.1950219
7  G 0.1453959
8  H 0.4071727
9  I 0.3324218
10 J 0.4342141
Run Code Online (Sandbox Code Playgroud)

这确实有一个缺点 - 下次你打电话ls()那里现在有一个obj.我确定有一些解决方法.

无论如何,我认为我仍然喜欢ls.str()它处理大对象的方式(但我使用了很多巨大的(数百万个元素)矩阵,所以这是我的偏好).


gau*_*den 8

我发现使用RStudio可以查看环境中的所有对象并直接与每个对象进行交互.我相信一个好的IDE将允许您的问题似乎需要的那种探索.这对于为您提供大量对象的视图尤其有用.


Cyn*_*ida 6

如果只想使用变量的名称,请使用:

ls()
Run Code Online (Sandbox Code Playgroud)

如果还要打印变量及其内容,请使用以下命令:

mget(ls())
Run Code Online (Sandbox Code Playgroud)

这应该做您需要的。

对于具有一些矩阵,向量和数据帧的新开放工作空间,它对我来说很好。


Car*_*oft 5

相信我:你真的不想打印所有对象的所有内容.试想一下,打印出来matrix(1:1e5,100,1000):-(.有一些有用的布线工具一样summary,tablestr通常告诉你足够的关于数据对象的让你知道你想用它做什么它是什么.如果你有更多的具体问题,例如,"我的哪个数据帧具有NA值?",您可以编写命令或迷你函数来查找.
我为自己写了一些名称lstype(objtype='closure'),其中列出了指定类型的所有对象.