我在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
截至目前,我已尝试过以下代码,但它为一类变量
提供了NULLfor (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"
请求你的帮助。
答案 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]))
}