如何通过变量索引数据框列?

Use*_*ser 1 types r dataframe

作为一个例子,我想要一个函数,它将迭代数据帧中的列并打印出每个列的数据类型(例如,"数字","整数","字符"等)

没有变量,我知道我可以做到class(df$MyColumn)并获得数据类型.如何更改它以便"MyColumn"是一个变量?

我正在尝试的是

f <- function(df) {

 for(column in names(df)) {
   columnClass = class(df[column])
   print(columnClass)
 }

}
Run Code Online (Sandbox Code Playgroud)

但这只是打印出[1] "data.frame"每列.

42-*_*42- 6

由于数据框只是一个列表,因此您可以使用循环列lapply并将class函数应用于每列:

lapply(df, class)
Run Code Online (Sandbox Code Playgroud)

为了解决用户的评论之前潜担忧....如果你建立,做了功能不管它是你希望一列,那么这成功:

func <- function(col) {print(class(col))}
lapply(df, func)
Run Code Online (Sandbox Code Playgroud)

它实际上大部分相当于:

 for(col in names(df) ) { print(class(df[[col]]))} 
Run Code Online (Sandbox Code Playgroud)

并且不会有一个不需要的'colClass'变量使.GlobalEnv混乱.


小智 4

之前使用逗号column

for(column in names(df)) {
   columnClass = class(df[,column])
   print(columnClass)
 }
Run Code Online (Sandbox Code Playgroud)