转换复杂语句使用哪个()

时间:2014-04-05 16:43:09

标签: r functional-programming

如何使用which()语句简化以下代码:

install.packages("ISLR")
library(ISLR)
Auto <- na.omit(Auto)
q <- numeric(0);
for (i in seq(names(Auto))) {
  if ((class(eval(parse(text=paste('Auto$',names(Auto)[i],sep="")))) == "numeric") &
   (length(table(eval(parse(text=paste('Auto$',names(Auto)[i],sep=""))))) > 15)) {
    q <- cbind(q,i)}
}

这不仅仅是多个if-then语句。我正在确定每个列中数据的类和分布。

1 个答案:

答案 0 :(得分:1)

您可以使用lapply获取有关数据框中每列的信息:

classes <- unlist(lapply(Auto, class))
num.unique <- unlist(lapply(Auto, function(x) length(unique(x))))

然后,您可以轻松找到超过15个元素的数字变量索引:

which(classes == "numeric" & num.unique > 15)
#          mpg displacement   horsepower       weight acceleration 
#            1            3            4            5            6