检查R中data.frame中列的数据类型

时间:2015-08-22 03:08:46

标签: r readr

如何在data.frame中找到列的数据类型?

我使用下面的代码,它有意义吗? 我得到了正确的输出。

for (f in feature.names) {

  if (class(train[[f]]) == "character") {
    count_c <- count_c + 1
  }
  if(class(train[[f]]) == "numeric"){
    count_numeric <- count_numeric + 1
  }
  if(class(train[[f]]) == "logical"){
    print(f)
    print(unique(train[[feature.names[count_n]]]))
    cat('\n')
    count_logic <- count_logic + 1
  }
  if(class(train[[f]]) == "integer"){
    count_int <- count_int + 1
  }
  count_n <- count_n + 1
}

1 个答案:

答案 0 :(得分:1)

如果您已正确初始化计数器,则代码应该可以正常工作。 (一个可以重现的例子很好......)跟进@ akrun的建议,

table(sapply(yourdat, class))

应该替换你正在做的事情,尽管像

allClasses <- c("logical","integer","character","numeric")
s <- sapply(yourdat,class)
f <- factor(s,levels=allClasses)
table(f)

可能会稍好一些(如果数据集中没有表示类型,则可以正常工作)。