如何在工作区中的元素上运行循环?

Bha*_*ail 2 r

> ls()
 [1] "A"          "anorex.1"   "anorexia"   "B"          "byMonth"    "C"          "clotting"  
 [8] "counts"     "d"          "D"          "d.AD"       "DelayByDay" "delayed"    "glm.D93"   
[15] "glmout"     "groups"     "h"          "housing"    "madeup"     "notdelayed" "outcome"   
[22] "q19"        "q22.1"      "q23"        "q23.1"      "q25"        "q25.1"      "q26"       
[29] "q26.2"      "speed"      "tmp"        "treatment"  "tt"         "w"          "wnd"       
[36] "x"          "y"          "z"
Run Code Online (Sandbox Code Playgroud)

我想的是让我说我​​想知道我工作区中所有对象的类,并且想想写一个循环,这样做的效果如下:

for(x in 1:38) print(class(ls(1)[x]))
Run Code Online (Sandbox Code Playgroud)

但是这给了我作为每个对象的类的字符(如果我没有错,则是每个对象的名称类.)

我试图找出工作区,类,长度或暗淡中的对象.for循环可以实现这一点,应用函数之一是否也可以执行此操作.谢谢

Ric*_*ven 5

你的循环只使用一个字符名称,所以R认为它只是一个字符向量.你需要获得对象本身.您可以使用mget()从字符向量中获取给定环境(列表)中的多个对象.这意味着我们可以通过它ls().然后我们可以浏览该列表并获取该类.

lapply(mget(ls()), class)
Run Code Online (Sandbox Code Playgroud)

我使用lapply()是因为一些对象完全有可能有多个类.

如果您想了解有关该对象的其他属性/信息,请编写一个函数.

f <- function(x) list(dim = dim(x), class = class(x))
lapply(mget(ls()), f)
Run Code Online (Sandbox Code Playgroud)