如何使用循环获取R中的变量类?

时间:2016-12-19 18:14:28

标签: r

我在R中有四列数据框,我试图使用for循环获取每个变量的类,这取决于我可以编写另一个代码的变量类。以下是数据框。

   var1 var2 var3 var4
1     1    a    a    s
2     2    g    a    s
3     3    b         s
4     4    n    s    s
5    NA    m    f    f
6     6    r    g    v
7     7    t         b
8     8         j     
9     9    y    i    g
10   10    h    i    t

截至目前,我已尝试过以下代码,但它为一类变量

提供了NULL
for (i in names(df)){
  print(names(df[i]))
  name <- names(df[i])
  print(class(df$name))
}

以上代码的结果:

[1] "var1"
[1] "NULL"
[1] "var2"
[1] "NULL"
[1] "var3"
[1] "NULL"
[1] "var4"
[1] "NULL"

期待结果

    [1] "var1"
    [1] "integer"
    [1] "var2"
    [1] "factor"
    [1] "var3"
    [1] "factor"
    [1] "var4"
    [1] "integer"

请求你的帮助。

2 个答案:

答案 0 :(得分:3)

由于data.frame实际上只是list列,所以我经常使用lapply执行此操作:

lapply(df, class)

对于示例中的for循环,当您调用df$name时,R正在尝试查找名为&#34; name&#34;的列。相反,您需要df[, name]

for (i in names(df)){
  name <- names(df[i])
  print(name)
  print(class(df[, name]))
}

答案 1 :(得分:1)

以mtcars为例:

for (i in names(mtcars)){
    print(names(mtcars[i]))
    name <- names(mtcars[i])
    print(class(mtcars[,i]))
    }