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

时间:2015-09-14 19:45:32

标签: 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"

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

for(x in 1:38) print(class(ls(1)[x]))

但是这给了我角色作为每个对象的类(如果我没有错,那就是每个对象名称的类。)

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

2 个答案:

答案 0 :(得分:5)

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

lapply(mget(ls()), class)

我使用lapply()因为某些对象完全有可能有多个类。

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

f <- function(x) list(dim = dim(x), class = class(x))
lapply(mget(ls()), f)

答案 1 :(得分:0)

您可以使用get()。像:

for (i in ls()) {
  print(get(i))
}