2016-12-19 44 views
1

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

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" 

请求你的帮助页。

回答

3

由于data.frame s的其实只是列的list,我经常这样使用lapply

lapply(df, class) 

至于for循环你有例如,当您拨打df$name时,R正试图找到名为“name”的列。相反,您需要df[, name]

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

使用mtcars为例:

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